coredumpy 使用教程
1. 项目介绍
coredumpy
是一个用于保存程序崩溃现场的工具,便于后续的故障排查和分析。它可以与 pytest
、unittest
等测试框架无缝集成,支持多种调试工具,如 VSCode 和 pdb,使得开发者能够轻松定位问题所在。
2. 项目快速启动
安装
首先,确保你已经安装了 Python。接下来,可以使用 pip 安装 coredumpy
:
pip install coredumpy
配置
在开始使用之前,你可能需要对 coredumpy
进行一些配置。创建一个名为 conf_coredumpy.py
的文件,并添加以下内容:
from coredumpy import config
# 设置默认的递归深度
config.default_recursion_depth = 10
# 设置转储超时时间
config.dump_timeout = 60
# 是否转储所有线程
config.dump_all_threads = True
# 是否隐藏匹配特定模式的字符串
config.hide_secret = True
# 设置密码模式
config.secret_patterns = [re.compile(r"[A-Za-z0-9]{32,1024}")]
# 是否隐藏环境变量中的字符串
config.hide_environ = True
# 设置环境变量过滤条件
config.environ_filter = lambda env: len(env) > 8
使用
与 pytest 集成
在运行 pytest
时,添加 --enable-coredumpy
和 --coredumpy-dir
参数来启用 coredumpy
并指定转储目录:
pytest --enable-coredumpy --coredumpy-dir ./dumps
使用 coredumpy 运行脚本
在运行脚本时,使用 coredumpy run
命令。如果脚本中发生未处理的异常或测试失败,将生成转储:
coredumpy run my_script.py
或者指定转储目录:
coredumpy run my_script.py --directory ./dumps
手动转储当前帧堆栈
在代码中导入 coredumpy
并使用 dump
方法手动转储当前帧:
import coredumpy
# 转储调用者帧
coredumpy.dump()
# 指定特定帧转储
coredumpy.dump(frame)
# 设置搜索深度
coredumpy.dump(depth=2)
# 指定文件名保存转储
coredumpy.dump(path='coredumpy.dump')
# 使用函数生成文件名
coredumpy.dump(path=lambda: f"coredumpy_{time.time()}.dump")
# 指定转储目录
coredumpy.dump(directory='./dumps')
# 添加描述
coredumpy.dump(description="a random dump")
3. 应用案例和最佳实践
案例一:自动转储 pytest 异常
在 pytest
测试中,自动转储失败的测试案例,便于后续分析:
pytest --enable-coredumpy --coredumpy-dir ./dumps
案例二:调试多线程应用
coredumpy
支持多线程应用的转储。在多线程程序中,可以捕获到所有线程的状态,从而帮助开发者定位问题。
最佳实践
- 在持续集成(CI)流程中使用
coredumpy
,自动收集测试中的异常信息。 - 对于复杂的应用,使用
coredumpy
的配置选项来优化转储文件的大小和内容。 - 在开发环境中,利用
coredumpy
的实时转储功能,快速定位问题。
4. 典型生态项目
coredumpy
可以与多种开发工具和环境集成,以下是一些典型的生态项目:
- VSCode: 通过 VSCode 插件,可以直接加载和查看转储文件。
- pdb/ipdb: 支持使用pdb或ipdb调试转储文件。
- GitHub Actions: 可以通过 GitHub Actions 自动上传转储文件,并与团队共享。
通过上述教程,开发者可以快速上手 coredumpy
,提高故障排查的效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考