trace —跟踪或跟踪 Python 语句的执行

源代码: Lib/trace.py


trace模块允许您跟踪程序执行,生成带 Comments 的语句覆盖列表,打印调用方/被调用方关系以及列出在程序运行期间执行的Function。可以在其他程序中或从命令行中使用它。

See also

  • Coverage.py

  • 流行的第三方覆盖工具,提供 HTML 输出以及分支覆盖等高级Function。

Command-Line Usage

trace模块可以从命令行调用。它可以很简单

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

上面的代码将执行somefile.py并生成在执行过程中导入到当前目录中的所有 Python 模块的带 Comments 的列表。

版本 3.8 中的新增Function:添加了--module选项,该选项允许运行可执行模块。

Main options

调用trace时,必须至少指定以下选项之一。 --listfuncs选项与--trace--count选项互斥。如果提供--listfuncs,则既不接受--count也不接受--trace,反之亦然。

Modifiers

Filters

这些选项可以重复多次。

Programmatic Interface

Note

  • run(* cmd *)

  • 执行命令并使用当前跟踪参数从执行中收集统计信息。 * cmd *必须是字符串或代码对象,适合传递到exec()

  • runctx(* cmd globals = None locals = None *)

  • 在定义的全局和局部环境中,执行命令并使用当前的跟踪参数从执行中收集统计信息。如果未定义,则* globals locals *默认为空字典。

  • runfunc(* func *, *args * kwds *)

  • 在具有当前跟踪参数的Trace对象的控制下,使用给定的参数调用* func *。

  • results ( )

  • 返回一个CoverageResults对象,该对象包含给定Trace实例以前对runrunctxrunfunc的所有先前调用的累积结果。不重置累积的跟踪结果。

Note

  • update(其他)

  • 合并来自另一个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=".")
首页