trace
trace - 跟踪或跟踪Python语句执行
源代码:
Lib / trace.py
该trace
模块允许您跟踪程序执行,生成带注释的语句覆盖列表,打印在程序运行期间执行的调用者/被调用者关系和列表函数。它可以在另一个程序或命令行中使用。
1.命令行用法
该trace
模块可以从命令行调用。它可以如此简单
python -m trace --count -C . somefile.py ...
以上将执行somefile.py
并生成执行过程中导入到当前目录中的所有Python模块的注释列表。
--help
显示使用情况并退出。
--version
显示模块的版本并退出。
1.1.主要选项
调用时必须至少指定以下选项之一trace
。该--listfuncs
选项与--trace
和选项是互斥的--count
。何时--listfuncs
提供,既不被接受--count
也不--trace
被接受,反之亦然。
-c, --count
在程序完成时产生一组带注释的列表文件,显示每个语句执行的次数。另见--coverdir
,--file
和--no-report
下面。
-t, --trace
在执行时显示行。
-l, --listfuncs
显示通过运行程序执行的功能。
-r, --report
从使用--count
and --file
选项的早期程序运行中生成注释列表。这不会执行任何代码。
-T, --trackcalls
显示通过运行程序暴露的调用关系。
1.2.修饰符
-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
在每行的前面加上自程序启动以来的时间。仅在追踪时使用。
1.3.过滤器
这些选项可能会重复多次。
--ignore-module=<mod>
忽略每个给定的模块名称及其子模块(如果它是一个包)。参数可以是用逗号分隔的名称列表。
--ignore-dir=<dir>
忽略指定目录和子目录中的所有模块和程序包。该参数可以是一个由目录分隔的目录列表os.pathsep
。
2.编程接口
class trace.Trace([count=1[, trace=1[, countfuncs=0[, countcallers=0[, ignoremods=()[, ignoredirs=()[, infile=None[, outfile=None[, timing=False]]]]]]]]])
创建一个对象来跟踪
单个语句或表达式的执行。所有参数都是可选的。计数
可以计算行号。跟踪
启用行跟踪
。countfuncs
可以列出运行期间调用的函数。计数器
支持呼叫关系跟踪
。ignoremods
是要忽略的模块或软件包的列表。ignoredirs
是应该忽略模块或包的目录列表。infile
是从中读取存储计数
信息的文件的名称。outfile
是在其中写入更新的计数
信息的文件的名称。定时
启用相对于何时开始显示跟踪
的时间戳。
run(cmd)
执行命令并使用当前跟踪参数从执行中收集统计信息。cmd
必须是一个字符串或代码对象,适合传入exec()
。
runctx(cmd, globals=None, locals=None)
在已定义的全局和本地环境中,执行命令并使用当前跟踪参数从执行中收集统计信息。如果未定义,全局变量
和本地变量
默认为空字典。
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
以显示没有匹配的行。设置摘要
以在输出中包含每个模块的覆盖率摘要
。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=".")