View Full Version : trace کردن کدهای برنامه از نقطه ای خاص
one hacker alone
دوشنبه 03 تیر 1392, 04:30 صبح
با یاد خدا
سلام خدمت دوستان
سورس برنامه ای که دارای توابع زیادی هست چجوری میشه برنامه رو دیباگ کرد به روش دنبال کردن کدها از نقطه ای خاص
یعنی برنامه گام به گام خودمون اجرا کنیم اما نمیخوام از اول شروع بشه
چجوری خط خاصی از برنامه رو مشخص کنیم که از اونجا تریس کنیم کد ها رو و درضمن محتوای متغییر ها و ارایه ها کجا دیده میشن؟
محسن واژدی
دوشنبه 03 تیر 1392, 06:15 صبح
سلام علیکم
میتوانید یک breakpoint در ابتدای روال ایجاد کنید (انتخاب خط و فشردن F9 یا کلیک در ستون سمت چپ) و زمانی که برنامه در خط انتخابی متوقف شد فلاش زرد رنگ را گرفته و تا خط مورد نظر جابجا کنید، برای ادامه برنامه و اجرای خط به خط از کلید F8 استفاده کنید (اگه در یکی از خطوط به فراخوانی تابع دیگری نیاز باشد اشاره گر ببه اون تابع منتقل میشود، در صورتیکه توابع دوم تودرتو یا طولانی هستند میتوانید با Shift+F8 طبق روال قبل اجرای برنامه را خط به خط به جلو ببرید اما با رسیدن به یک تابع بجای انتقال اشاره گر به روال تنها نتیجه آن برگشت داده میشود)
در راه دوم:
روی خط مورد نظر breakpoint زده
برچسبی را بالای خط تعریف کرده (مثلا lnpause:)
دستور GoTo را در بالای روال قرار داده (مثلا GoTo lnpause) تا با شروع روال برنامه به خط انتخاب شده منتقل و متوقف شود
محتوای متغییر ها و ارایه ها کجا دیده میشن؟ در هنگام دیباگ برای مشاهده محتوای متغیرها و آرایه ها، فلاش موس رو روی متغیر/آرایه قرار بدین بعد لحظه محتوی متغیر نمایش داده میشه، همینطور برای مشاهده نتیجه یک شرط یا عملیات های حسابی (مابین چند متغیر) آن خط را highlight سپس فلاش را روی محدوده انتخابی نگهدارید تا نتیجه نمایش داده بشه
موفق باشید
SlowCode
دوشنبه 03 تیر 1392, 13:50 عصر
از تابع Stop هم میتونی استفاده کنی که اجرای برنامه رو به تعلیق میندازه و فقط تو حالت دیباگ کاربرد داره.
If Condition Then
Stop
'Codes
End if
محسن واژدی
دوشنبه 03 تیر 1392, 18:22 عصر
از تابع Stop هم میتونی استفاده کنی که اجرای برنامه رو به تعلیق میندازه و فقط تو حالت دیباگ کاربرد داره.
If Condition Then
Stop
'Codes
End if
البته نکته ظریفی که در استفاده از Stop وجود داره این هست که حتما بایستی پیش از کامپایل نهایی تمامی Stopهای نوشته شده در روال ها رو غیرفعال کنیم چرا که برخلاف Debug.Assert False که تنها در محیط debug اجرا میشه (و در برنامه منتشر شده اجرا نمیشه) ، Stop حتی در برنامه کامپایل شده هم میتواند اجرا و بی موقع برنامه را خارج کند
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.