3个版本
0.1.2 | 2023年1月2日 |
---|---|
0.1.1 | 2020年3月6日 |
0.1.0 | 2019年9月15日 |
#335 在 调试 中
每月 312次下载
在 6 个crate中使用 (5 直接)
19KB
135 行
coredump
coredump 是一个crate,用于使Rust程序在遇到panic时创建coredump。
为什么?
默认情况下,当Rust程序panic时,它将打印回溯并终止程序。在某些情况下,这种行为不足以或不是所希望的,包括
- 您想确保能够根据错误报告和回溯来定位问题,而单独的回溯可能不足以
- 您无法获取panic的回溯,例如,因为它被打印到终端的备用屏幕或其他方式不可用
coredump 解决了这些问题,并且可以与其他涉及panic路径的crate结合使用,例如 human-panic
。
用法
该crate通过注册一个自定义panic处理程序来实现,该处理程序将在之前安装的(或默认的)处理程序之后运行。注册此自定义处理程序的方法很简单,只需在程序初始化的早期调用
register_panic_handler()
(理想情况下在可能发生panic之前)。
panic发生后,可以使用 gdb(1)
查看core文件,如下所示
$ rust-gdb <paniced-binary> <core-file>
默认情况下,由该crate创建的core文件将位于系统的临时目录中,但此行为可能被系统配置覆盖。
限制
设计上,这个包只关注常规(语言级别)的恐慌。段错误或其他问题不由其方法覆盖。使用此包的应用程序也必须带有适当的展开支持(展开是默认情况,但可以通过添加 panic = 'abort'
到正在编译的配置文件中来自定义)来编译,而不是仅中止执行。
此外,虽然许多系统上存在核心转储支持,但许多因素会影响系统创建应用程序核心转储的能力。其中许多因素超出了此包的控制范围,既包括它们无法改变,也可能在运行时根本无法检查。系统必须满足的完整要求列表请参阅 core(5)
。