3个版本

0.1.2 2023年1月2日
0.1.1 2020年3月6日
0.1.0 2019年9月15日

#335调试

Download history 149/week @ 2024-03-13 88/week @ 2024-03-20 145/week @ 2024-03-27 184/week @ 2024-04-03 95/week @ 2024-04-10 108/week @ 2024-04-17 107/week @ 2024-04-24 95/week @ 2024-05-01 46/week @ 2024-05-08 69/week @ 2024-05-15 118/week @ 2024-05-22 164/week @ 2024-05-29 74/week @ 2024-06-05 75/week @ 2024-06-12 87/week @ 2024-06-19 59/week @ 2024-06-26

每月 312次下载
6 个crate中使用 (5 直接)

GPL-3.0-or-later

19KB
135

pipeline crates.io Docs rustc

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)

依赖项