trace
— Trace or track Python statement execution¶
Вихідний код: Lib/trace.py
Модуль trace
дозволяє вам відстежувати виконання програми, генерувати списки охоплення анотованих інструкцій, друкувати зв’язки між викликами та функціями списку, що виконуються під час виконання програми. Його можна використовувати в іншій програмі або з командного рядка.
Дивись також
- Coverage.py
Популярний сторонній інструмент покриття, який забезпечує виведення HTML разом із розширеними функціями, такими як покриття гілок.
Використання командного рядка¶
Модуль trace
можна викликати з командного рядка. Це може бути так просто:
python -m trace --count -C . somefile.py ...
Вищезазначене виконає somefile.py
і створить анотовані списки всіх модулів Python, імпортованих під час виконання в поточний каталог.
-
--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 — це ім’я файлу, у який потрібно записати оновлену інформацію про кількість. час дозволяє відображати мітку часу щодо початку трасування.
-
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)¶ Напишіть результати покриття. Встановіть show_missing, щоб показувати рядки, які не мали збігів. Встановіть summary, щоб включити до вихідних даних підсумок покриття для кожного модуля. coverdir вказує каталог, у який будуть виведені файли результатів покриття. Якщо
None
, результати для кожного вихідного файлу розміщуються в його каталозі.
-
Простий приклад, що демонструє використання програмного інтерфейсу:
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=".")