کتابخانه‌ی استاندارد · سیستم و ابزار

اشکال زدایی debug

ابزار پیدا کردن اشکال: ادعا، پشته‌ی فراخوانی دستی، ردیابی و زمان‌سنجی.

واردسازی اشکال زدایی
در این صفحه
  1. روال‌ها

بسته‌ی اشکال زدایی چند ابزار ساده برای وقتی دارد که برنامه کار درستی نمی‌کند. ادعا شرطی را که باید همیشه درست باشد بررسی می‌کند. ورود و خروج یک پشته‌ی فراخوانی دستی می‌سازند تا بدانید کجای برنامه‌اید. زمان‌سنج‌ها هم نشان می‌دهند کدام بخش کند است.

روال‌ها

ادعا Assert

روال ادعا(cond: منطقی، msg: رشته)
اگر شرط نادرست باشد، پیام را چاپ می‌کند و برنامه را متوقف می‌کند.
debug-Enter.salam
واردسازی اشکال زدایی

روال فرزند():
    اشکال زدایی.ورود("فرزند")
    سرچاپ اشکال زدایی.عمق()
    سرچاپ اشکال زدایی.پشته()
    اشکال زدایی.خروج()
پایان

روال ریشه:
    اشکال زدایی.ورود("ریشه")
    فرزند()
    اشکال زدایی.خروج()
    سرچاپ اشکال زدایی.عمق()
    اشکال زدایی.ادعا(۱ + ۱ == ۲، "حساب درست است")
    اشکال زدایی.ادعای خالی نبودن(اشکال زدایی.آمار حافظه() برگردان تهی*، "آمار حافظه")
    اشکال زدایی.فعال‌سازی ردیابی(درست)
    سرچاپ اشکال زدایی.ردیابی فعال است()
    اشکال زدایی.ردیابی("یک پیام ردیابی")
    اشکال زدایی.شروع تایمر("حلقه")
    ناپایا ج := ۰
    تکرار ۱۰۰۰ در ای:
        ج += ای
    پایان
    سرچاپ ج، اشکال زدایی.پایان تایمر("حلقه") >= ۰.۰
    اگر ج < ۰:
        اشکال زدایی.شکست‌نقطه()
    پایان
پایان
خروجی2 ریشه > فرزند 0 true [TRACE] یک پیام ردیابی 499500 true

ادعای خالی نبودن AssertNotNil

روال ادعای خالی نبودن(p: تهی*، msg: رشته)
اگر اشاره‌گر پوچ باشد، با پیام متوقف می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

ورود Enter

روال ورود(frame: رشته)
نام یک مرحله را به پشته‌ی دستی اضافه می‌کند؛ معمولاً در ابتدای روال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

خروج Exit

روال خروج()
آخرین مرحله را از پشته برمی‌دارد؛ در پایان روال.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

پشته Stack

روال پشته(): رشته
پشته‌ی فعلی را به شکل ریشه > فرزند برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

عمق Depth

روال عمق(): صحیح
عمق پشته‌ی دستی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

فعال‌سازی ردیابی EnableTrace

روال فعال‌سازی ردیابی(enabled: منطقی)
پیام‌های ردیابی را روشن یا خاموش می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

ردیابی فعال است TraceEnabled

روال ردیابی فعال است(): منطقی
اگر ردیابی روشن باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

ردیابی Trace

روال ردیابی(msg: رشته)
اگر ردیابی روشن باشد، پیام را با برچسب [TRACE] چاپ می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

شروع تایمر StartTimer

روال شروع تایمر(name: رشته)
زمان‌سنجی با نام داده‌شده را شروع می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

پایان تایمر StopTimer

روال پایان تایمر(name: رشته): اعشار۶۴
زمان‌سنج را متوقف می‌کند و زمان سپری‌شده را بر حسب میلی‌ثانیه برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

شکست‌نقطه Break

روال شکست‌نقطه()
اگر برنامه زیر یک اشکال‌زدا (مثل gdb) اجرا شود، همین‌جا متوقف می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam

آمار حافظه MemStats

روال آمار حافظه(): رشته
خلاصه‌ی آمار حافظه به شکل متن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: debug-Enter.salam