trace — Trace or track Python statement execution¶
Вихідний код: Lib/trace.py
The trace module allows you to trace program execution, generate
annotated statement coverage listings, print caller/callee relationships and
list functions executed during a program run. It can be used in another program
or from the command line.
Дивись також
- Coverage.py
Популярний сторонній інструмент покриття, який забезпечує виведення HTML разом із розширеними функціями, такими як покриття гілок.
Використання командного рядка¶
The trace module can be invoked from the command line. It can be as
simple as
python -m trace --count -C . somefile.py ...
Вищезазначене виконає somefile.py і створить анотовані списки всіх модулів Python, імпортованих під час виконання в поточний каталог.
- --help¶
Показ використання та вихід.
- --version¶
Відображення версії модуля та вихід.
Added in version 3.8: Додано параметр --module, який дозволяє запускати виконуваний модуль.
Основні параметри¶
At least one of the following options must be specified when invoking
trace. The --listfuncs option is mutually exclusive with
the --trace and --count options. When
--listfuncs is provided, neither --count nor
--trace are accepted, and vice versa.
- -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 — це ім’я файлу, у який потрібно записати оновлену інформацію про кількість. час дозволяє відображати мітку часу щодо початку трасування.
- 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, результати для кожного вихідного файлу розміщуються в його каталозі.If ignore_missing_files is
True, coverage counts for files that no longer exist are silently ignored. Otherwise, a missing file will raise aFileNotFoundError.Змінено в версії 3.13: Added ignore_missing_files parameter.
Простий приклад, що демонструє використання програмного інтерфейсу:
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=".")