You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python trace函数追踪结果打印到终端但未生成保存文件的原因

Python trace模块指定coverdir未生成的排查结论

以下代码执行时,终端可正常输出trace追踪结果,但指定的trace_vizier目录始终不会生成:

import sys
import trace

tracer = trace.Trace(
    ignoredirs=[sys.prefix, sys.exec_prefix],
    trace=False,
    countfuncs = True,
    count=False,
    timing = True
)
tracer.run('exec(script, variables, variables)')

r = tracer.results()
r.write_results(show_missing=True, coverdir='trace_vizier')

根本原因

  • write_results方法的coverdir参数仅用于存储行级代码覆盖率统计结果,只有开启行执行计数功能时,才会触发该目录创建、文件写入的逻辑。上述代码初始化Trace实例时设置count=False,直接关闭了行级执行计数、覆盖率统计能力,因此不会执行覆盖率相关的写文件操作,指定目录自然不会生成。
  • 当前代码开启的是countfuncs=True(函数调用计数)、timing=True(调用耗时统计),这两类统计结果的输出和coverdir参数无关:
    • 未指定输出目标时,结果会直接打印到标准输出流,也就是终端里看到的内容
    • 要保存这两类结果到文件,需要在调用write_results时传入file参数指定写入的文件对象,示例:
      with open("trace_function_stats.txt", "w", encoding="utf-8") as res_file:
          r.write_results(show_missing=True, coverdir="trace_vizier", file=res_file)
      
  • 如果需要生成行覆盖率文件存入coverdir目录,将初始化Trace时的count参数改为True即可。开启后模块会自动统计每行代码的执行次数,调用write_results时会自动创建指定目录,将每个被追踪文件的覆盖率结果写入对应文件。

内容的提问来源于stack exchange,提问作者Nachiket Deo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:15:48