31 个版本 (15 个重大更新)

0.22.0 2024年7月3日
0.21.1 2024年3月1日
0.19.1 2023年11月2日
0.17.0 2023年5月17日
0.1.0 2017年12月21日

#72解析器实现

Download history 2862/week @ 2024-05-02 2480/week @ 2024-05-09 3544/week @ 2024-05-16 2365/week @ 2024-05-23 3156/week @ 2024-05-30 2961/week @ 2024-06-06 2685/week @ 2024-06-13 2634/week @ 2024-06-20 1814/week @ 2024-06-27 2365/week @ 2024-07-04 2510/week @ 2024-07-11 2658/week @ 2024-07-18 2654/week @ 2024-07-25 2286/week @ 2024-08-01 2484/week @ 2024-08-08 2463/week @ 2024-08-15

10,294 每月下载次数
用于 11 个crate(8个直接使用)

MIT 许可证

765KB
15K SLoC

minidump

crates.io

minidump 格式的基本解析。

如果您想对 minidump 进行更丰富的分析(如堆栈跟踪和符号化),请使用 minidump-processor

用法

此库的主要 API 是 Minidump 结构体,可以通过调用 Minidump::readMinidump::read_path 方法进行实例化。

成功解析 Minidump 结构体表示 minidump 具有最小有效头和流目录。单个流仅在请求时进行解析。

尽管您可以使用 Minidump::all_streams 等方法遍历 minidump 中的流,但这实际上仅对调试有用。相反,您应该使用 Minidump::get_stream 静态请求流。

根据您要执行的分析,您可能

  • 将流缺失视为错误(使用 ?unwrap
  • 根据流的可用性进行分支,以有条件地细化您的分析
  • 使用流的 Default 实现以获取“空”实例(使用 unwrap_or_default
use minidump::*;

fn main() -> Result<(), Error> {
    // Read the minidump from a file
    let mut dump = minidump::Minidump::read_path("../testdata/test.dmp")?;

    // Statically request (and require) several streams we care about:
    let system_info = dump.get_stream::<MinidumpSystemInfo>()?;
    let exception = dump.get_stream::<MinidumpException>()?;

    // Combine the contents of the streams to perform more refined analysis
    let crash_reason = exception.get_crash_reason(system_info.os, system_info.cpu);

    // Conditionally analyze a stream
    if let Ok(threads) = dump.get_stream::<MinidumpThreadList>() {
        // Use `Default` to try to make progress when a stream is missing.
        // This is especially natural for MinidumpMemoryList because
        // everything needs to handle memory lookups failing anyway.
        let mem = dump.get_memory().unwrap_or_default();

        for thread in &threads.threads {
            let stack = thread.stack_memory(&mem);
            // ...
        }
    }
    Ok(())
}

依赖项

~6.5MB
~177K SLoC