PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حلقه for در دیباگ کردن



Aghaeifar
24-07-2010, 18:02
سلام
وقتی با کیل دیباگ می کنم به یه حلقه for می رسم که برای تاخیر گذاشتم مثلا تاخیر 10 میلی ثانیه ولی وقتی گزینه run رو می زنم چند ثانیه ای هم وای می ایستم ولی خارج نمیشه ...!
چرا اینطوریه ؟

farzadsw
25-07-2010, 07:57
وقتی run رو میزنید حلقه رو رد میکنه (به اندازه تاخیر) ولی تا وقتی pause رونزنید تغییرات رو نمیتونید ببینید . برای دیباگ نرم افزاری ، برنامه رو پله پله ببرید جلو و هر وقت به تاخیر رسیدید ، میتونید با پرش به خارج اون ، ادامه برنامه رو چک کنید .
اما اگر میخواید از همون run استفاده کنید ، بهتره از یه دیباگر مثل j-link یا h-jtag استفاده کنید و تغییرات رو به صورت هم زمان تو خود بورد ببینید (نیازی به pause نیست)

Aghaeifar
26-07-2010, 01:48
ولی روی سخت افزار این طور نیست (بر خلاف چیزی که امروز در مترو بهم گفتی) من یک حلقه for با تاخیر 1 میلی ثانیه رو این کار رو کردم بیش از 70 ثانیه طول کشید که از حلقه بیاد بیرون
دکمه run رو نزدم - داشتم به صورت step step می رفتم جلو وقتی به for رسیدم یک step دیگه زدم که 70 ثانیه طول کشید - تست رو رمستقیم روی سخت افزار انجام دادم...
حلقه for چیزی نبود جز یک خط زیر(کریستال 12 مگ)

for(i=0;i<6000;i++);

farzadsw
26-07-2010, 03:21
من با دیباگر سخت افزاری تست کردم ، وقتی run زده میشه ، برنامه با زمان واقعی (1ثانیه = 1 ثانیه ) رو بورد اجرا میشه . برنامه هم چشمک زن بود .
step step رو برای شبیه سازی خود کیل گفتم بهتره استفاده بشه . البته زمانبندی ها با مقدار واقعی فرق دارن (تو شبیه سازی ) . البته تو این نسخه ای که من الان دارم کلا شبیه سازی نرم افزاریش مشکل داره .

پس اگه از jtag استفاده میکنید ، وقی run میکنید باید درست کار کنه ، اگر به جای run بخواید step برید جلو وقتی به حلقه میرسه نباید استپ معمولی f11 استفاده کنید چون همونطور که گفتید به جای اینکه همون لحظه بره خط بعد ، شبیه حالت run میشه (دکمه های step غیر فعال میشه و پاز فعال) ! درصورتی که نباید اینطور باشه ، حالا دلیلش رو نمیدونم ولی برای حلش ، وقتی به حلقه رسیدید از ctrl+f10 استفاده کنید (تاخیر به صورت تابع باشه) .