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

如何限制Python trace追踪输出仅显示指定源文件的调用记录

指定源文件函数调用列表生成方案

不需要额外编写独立的过滤脚本处理原始trace输出,Python内置trace模块本身就支持筛选规则,直接配置即可拿到仅自身源码对应的调用记录:

  • 命令行快速方案:使用--ignore-dir参数排除所有非项目源码路径,直接过滤掉标准库、第三方依赖的调用记录,可直接运行如下命令:
python -m trace --trackcalls --ignore-dir=$(python -c "import sys, site; print(':'.join(sys.path[1:] + site.getsitepackages()))") main.py

该命令会自动获取当前Python环境的标准库、第三方包安装路径加入忽略列表,最终输出只会保留你当前工作目录下编写的源码调用记录。

  • 精准自定义方案:如果需要仅追踪某几个特定源文件,可直接调用trace模块的API初始化追踪器,自定义匹配规则,不需要事后筛日志,示例代码如下:
import trace
import sys
import os

# 配置需要追踪的目标文件绝对路径,示例为追踪main.py和同目录下的utils.py
TARGET_FILES = {os.path.abspath("main.py"), os.path.abspath("utils.py")}

def trace_filter(frame, event, arg):
    # 仅保留目标文件内的调用
    return os.path.abspath(frame.f_code.co_filename) in TARGET_FILES

# 初始化追踪器
tracer = trace.Trace(
    trace=0,
    count=0,
    callers=1,
    t=trace_filter
)
# 运行主程序
tracer.run('exec(open("main.py").read())')
# 输出按调用顺序排列的函数调用关系
call_records = tracer.results()
call_records.write_results(show_missing=False, coverdir=None)

如果项目结构简单,第一种命令行方案就能满足文档编写时展示程序工作流的需求;如果需要更精细的筛选粒度,用第二种API方式自定义规则即可,效率远高于事后处理全量trace日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:09:21