trace跟踪跟踪Python语句执行

源代码: Lib / trace.py


trace模块允许您跟踪程序执行,生成带注释的语句覆盖列表,打印调用者/被调用者关系以及在程序运行期间执行的列表函数。它可以在命令行中用于另一个编程器.

另请参阅

Coverage.py
一个流行的第三方覆盖工具,提供HTMLoutput以及分支覆盖等高级功能.

命令 – 线路使用

trace可以从命令行调用模块。它可以简单地作为

python -m trace --count -C . somefile.py ...

以上将执行somefile.py并生成在执行过程中导入的所有Python模块的注释列表到当前目录.

--help

显示用法并退出.

--version

显示模块的版本并退出.

主要选项

调用trace时,必须至少指定以下选项之一。--listfuncs选项与--trace--count选项互斥。什么时候--listfuncs提供,--count--trace都不被接受,反之亦然.

-c, --count

在程序完成时生成一组带注释的列表文件,显示每个语句执行多次。另见--coverdir, --file--no-report下面.

-t, --trace

在执行时显示行.

-l, --listfuncs

显示通过运行程序执行的功能.

-r, --report

从使用--count--file选项的早期程序运行中生成带注释的列表。这确实记下了任何代码.

-T, --trackcalls

显示通过运行程序公开的调用关系.

Modifiers

-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>

忽略每个给定的模块名称及其子模块(如果它是apackage)。参数可以是用逗号分隔的名称列表.

--ignore-dir=<dir>

忽略指定目录和子目录中的所有模块和包。参数可以是由os.pathsep.

程序界面

class trace.Tracecount=1, trace=1, countfuncs=0, countcallers=0, ignoremods=(), ignoredirs=(), infile=None, outfile=None, timing=False

创建一个对象以跟踪单个语句或表达式的执行。所有参数都是可选的。count可以计算行号。trace启用行执行跟踪countfuncs允许列出运行期间调用的功能。countcallers启用呼叫关系跟踪。ignoremods是要忽略的模块或包的列表.ignoredirs是一个模块或包应该签名的目录列表。infile是从中读取存储的count信息的文件的名称。outfile是要写入updatedcount信息的文件的名称。timing启用相对于启动跟踪时的时间戳.

run(cmd)

执行命令并通过当前跟踪从执行中收集统计信息参数。cmd必须是一个字符串或代码对象,适合传入exec().

runctxcmd, globals=None, locals=None

执行命令并通过当前跟踪从执行中收集统计信息参数,在定义的全局和局部环境中。如果没有定义,globalslocals默认为emptydictionaries.

runfunc (func, *args, **kwds)

Call func with the使用当前跟踪参数在Trace对象的控制下给出参数.

results ()

返回包含CoverageResults的对象对于给定的run, runctx所有先前调用runfuncTrace实例。不重置accumtrace results

class trace.CoverageResults

//覆盖结果的容器,由Trace.results()创建。不应该由用户直接创建.

update (other )

合并来自另一个CoverageResults对象的数据

write_results// (show_missing=True, summary=False, coverdir=None)

覆盖结果。设置show_missing以显示没有任何内容的行。设置summary在输出中包含coverage汇总permodule。coverdir指定将覆盖结果文件输出到的目录。如果None,每个源文件的结果都放在它的目录中.

一个简单的例子演示程序界面的使用:

import sysimport 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 tracertracer.run("main()")# make a report, placing output in the current directoryr = tracer.results()r.write_results(show_missing=True, coverdir=".")

评论被关闭。