大型Python代码库调试:可查看代码执行顺序的工具咨询
大型纯Python代码库执行顺序追踪工具推荐
针对你需要无侵入获取代码执行先后顺序、无需逐行添加日志、弥补coverage无时序信息短板的需求,直接上适配10万行级项目的可用工具:
- 标准库内置
trace模块
零额外依赖,不需要修改任何业务代码,通过命令行即可启动,支持输出逐行执行的先后顺序、函数调用关系。启动时添加路径过滤参数跳过标准库、第三方依赖目录,就不会被无关日志冲屏。
常用启动命令参考:
性能开销约为原程序的2-3倍,适合本地复现特定bug场景时使用。python -m trace --trace --ignore-dir=$(python -c "import sys; print(':'.join([p for p in sys.path if 'site-packages' in p or 'python3' in p]))") 你的项目入口脚本.py - 低开销采样追踪工具
py-spy
无侵入式采样分析工具,不需要修改代码,既可以直接启动目标脚本,也可以附加到已经在运行的Python进程上,对程序运行性能影响极小,哪怕跑全量数据准备流程也不会有明显卡顿。支持导出带时间序的调用记录、生成时序火焰图,你可以快速定位数据处理链路的执行先后,不用翻冗余日志。 - 灵活过滤型追踪工具
hunter
专门面向调试场景的追踪工具,不需要在业务代码里加日志,只需要在项目启动入口加2-3行配置,就能按模块前缀、函数名、行号等规则,精准追踪你关心的代码段(比如只追踪数据准备模块的执行流),完全屏蔽无关模块的输出。最简配置参考:
输出内容带清晰的调用层级、时间戳、执行顺序标记,性能开销远低于原生trace模块,适配大型项目的定向追踪需求。from hunter import trace, Q # 只追踪your_project.data_prep包下的所有代码执行 trace(Q(module_startswith="your_project.data_prep")) # 后续正常执行项目主逻辑即可 - 时序可视化工具
pycallgraph2
如果你需要更直观的全局执行视图,可以用这个工具生成带执行先后标记的调用关系图,标注每个函数的进入、退出时间,顺着链路就能快速梳理完整的数据准备流程。同样支持模块过滤,只渲染你关心的项目代码,避免生成的调用图过于庞杂无法阅读。
以上所有工具都不需要你逐行给业务代码添加logging日志,仅需启动时简单配置即可使用,完全满足你梳理执行顺序的需求。
内容的提问来源于stack exchange,提问作者mecs
相关产品推荐
相关产品推荐

