GeezerVison is showing python.github.io — trace --- ردگیری یا پیگیری اجرای دستورات پایتون
trace --- ردگیری یا پیگیری اجرای دستورات پایتون¶
کد منبع: Lib/trace.py
ماژول trace به شما امکان میدهد اجرای برنامه را ردگیری کنید، فهرستهای پوشش دستورهای حاشیهنویسیشده تولید کنید، روابط فراخواننده/فراخوانده را چاپ کنید و توابع اجراشده در طول اجرای برنامه را فهرست کنید. میتوان از آن در برنامهای دیگر یا از خط فرمان استفاده کرد.
همچنین ببینید
- Coverage.py
یک ابزار پوشش محبوب شخص ثالث که خروجی HTML را به همراه قابلیتهای پیشرفتهای مانند پوشش شاخه ارائه میدهد.
استفاده از خط فرمان¶
میتوان ماژول trace را از خط فرمان فراخوانی کرد. این کار میتواند به سادگی زیر باشد
python -m trace --count -C . somefile.py ...
مورد بالا somefile.py را اجرا خواهد کرد و فهرستهای حاشیهنویسیشدهای از همهی ماژولهای پایتونی که در حین اجرا ایمپورت میشوند را در پوشهی جاری تولید خواهد کرد.
-
--help¶
نمایش کاربرد و خروج.
-
--version¶
نمایش نسخهی ماژول و خروج.
اضافه شده در نسخهی 3.8: گزینه --module افزوده شد که امکان اجرای یک ماژول اجرایی را فراهم میکند.
گزینههای اصلی¶
حداقل یکی از گزینههای زیر باید هنگام فراخوانی trace مشخص شود. گزینه --listfuncs با گزینههای --trace و --count متقابلاً ناسازگار است. وقتی --listfuncs ارائه شود، نه --count و نه --trace پذیرفته نمیشوند، و بالعکس.
-
-c, --count¶
تولید مجموعهای از پروندههای فهرست حاشیهنویسیشده پس از تکمیل برنامه، که نشان میدهد هر دستور چند بار اجرا شده است. همچنین در ادامه --coverdir، --file و --no-report را ببینید.
-
-t, --trace¶
سطرها را همانطور که اجرا میشوند، نمایش دهید.
-
-l, --listfuncs¶
نمایش توابع اجراشده با اجرای برنامه.
-
-r, --report¶
یک فهرست حاشیهنویسیشده از اجرای قبلی برنامه که از گزینههای --count و --file استفاده کرده است، تولید کنید. این کار هیچ کدی را اجرا نمیکند.
-
-T, --trackcalls¶
روابط فراخوانی نمایانشده با اجرای برنامه را نمایش دهید.
اصلاحکنندهها¶
-
-f, --file=<file>¶
نام پروندهای برای انباشتن شمارشها در چندین اجرای ردگیری. باید همراه با گزینهی --count استفاده شود.
-
-C, --coverdir=<dir>¶
پوشهای که پروندههای گزارش در آن قرار میگیرند. گزارش پوشش برای package.module در پرونده dir/package/module.cover نوشته میشود.
-
-m, --missing¶
هنگام تولید فهرستهای حاشیهنویسیشده، سطرهایی را که اجرا نشدهاند با >>>>>> علامتگذاری کنید.
-
-s, --summary¶
هنگام استفاده از --count یا --report، برای هر پرونده پردازششده خلاصهای کوتاه در stdout نوشته میشود.
-
-R, --no-report¶
فهرستهای حاشیهنویسیشده را تولید نکنید. این زمانی مفید است که قصد دارید چندین اجرا با --count انجام دهید و سپس یک مجموعه واحد از فهرستهای حاشیهنویسیشده را در پایان تولید کنید.
-
-g, --timing¶
هر خط را با زمان سپریشده از آغاز برنامه پیشوند کنید. فقط هنگام ردگیری استفاده میشود.
فیلترها¶
این گزینهها را میتوان چندین بار تکرار کرد.
-
--ignore-module=<mod>¶
هر یک از نامهای ماژول دادهشده و زیرماژولهای آن (اگر بسته باشد) را نادیده بگیرید. آرگومان میتواند فهرستی از نامها باشد که با کاما از هم جدا شدهاند.
-
--ignore-dir=<dir>¶
تمام ماژولها و بستهها را در پوشهی مشخصشده و زیرپوشهها نادیده بگیرید. آرگومان میتواند فهرستی از پوشهها باشد که با os.pathsep جدا شدهاند.
رابط برنامهای¶
-
class trace.Trace(count=1, trace=1, countfuncs=0, countcallers=0, ignoremods=(), ignoredirs=(), infile=None, outfile=None, timing=False)¶
یک شیء برای ردگیری اجرای یک دستور یا عبارت ایجاد کنید. تمام پارامترها اختیاری هستند. count شمارش شمارههای خط را فعال میکند. trace ردگیری اجرای سطرها را فعال میکند. countfuncs فهرستگیری از توابعی که در طول اجرا فراخوانی میشوند را فعال میکند. countcallers پیگیری روابط فراخوانی را فعال میکند. ignoremods فهرستی از ماژولها یا بستههایی است که باید نادیده گرفته شوند. ignoredirs فهرستی از پوشههایی است که ماژولها یا بستههای آنها باید نادیده گرفته شوند. infile نام پروندهای است که اطلاعات شمارش ذخیرهشده از آن خوانده میشود. outfile نام پروندهای است که اطلاعات شمارش بهروز شده در آن نوشته میشود. timing نمایش یک مهر زمانی نسبت به زمان آغاز ردگیری را فعال میکند.
-
run(cmd)¶
دستور را اجرا کنید و آمار را از اجرا با پارامترهای ردگیری فعلی جمعآوری کنید. cmd باید یک رشته یا شیء کد باشد، مناسب برای ارسال به exec().
-
runctx(cmd, globals=None, locals=None)¶
فرمان را اجرا کنید و آمار حاصل از اجرا را با پارامترهای ردگیری جاری، در محیطهای سراسری و محلی تعریفشده جمعآوری کنید. اگر تعریفنشده باشند، globals و locals بهطور پیشفرض دیکشنریهای خالی خواهند بود.
-
runfunc(func, /, *args, **kwds)¶
func را با آرگومانهای دادهشده، تحت کنترل شیء Trace با پارامترهای ردگیری کنونی فراخوانی کنید.
-
results()¶
یک شیء CoverageResults را برمیگرداند که شامل نتایج تجمعی تمام فراخوانیهای پیشین run، runctx و runfunc برای نمونهی Trace دادهشده است. نتایج ردگیری انباشتهشده را بازنشانی نمیکند.
-
class trace.CoverageResults¶
ظرفی برای نتایج پوشش، که توسط Trace.results() ایجاد میشود. نباید بهصورت مستقیم توسط کاربر ایجاد شود.
-
update(other)¶
دادهها را از یک شیء CoverageResults دیگر ادغام کنید.
-
write_results(show_missing=True, summary=False, coverdir=None, *, ignore_missing_files=False)¶
نتایج پوشش را مینویسد. برای نمایش سطرهایی که هیچ برخوردی نداشتند، show_missing را تنظیم کنید. برای گنجاندن خلاصه پوشش به تفکیک ماژول در خروجی، summary را تنظیم کنید. coverdir پوشهای را مشخص میکند که پروندههای نتایج پوشش در آن خروجی داده میشوند. اگر None باشد، نتایج هر پرونده منبع در پوشه خودش قرار میگیرند.
اگر ignore_missing_files برابر True باشد، شمارشهای پوشش برای پروندههایی که دیگر وجود ندارند، بهصورت بیصدا نادیده گرفته میشوند. در غیر این صورت، یک پرونده ناموجود باعث پرتاب FileNotFoundError میشود.
تغییر یافته در نسخهی 3.13: پارامتر ignore_missing_files افزوده شد.
یک مثال ساده برای نشان دادن استفاده از رابط برنامهنویسی:
import sys
import trace
# create a Trace object, telling it what to ignore, and whether to
# do tracing or line-counting or both.
tracer = trace.Trace(
ignoredirs=[sys.prefix, sys.exec_prefix],
trace=0,
count=1)
# run the new command using the given tracer
tracer.run('main()')
# make a report, placing output in the current directory
r = tracer.results()
r.write_results(show_missing=True, coverdir=".")
© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا اشکالی یافتید؟
ساخته شده با Sphinx 9.1.0.
|