Mac OSX系统下如何查看Minidump堆栈跟踪信息?
解析Breakpad Minidump获取堆栈跟踪的步骤
别着急,你已经完成了最关键的两步(生成minidump和sym文件),接下来只要按以下步骤操作就能拿到堆栈跟踪了:
第一步:整理sym文件的目录结构
Breakpad的minidump_stackwalk工具需要按照固定的目录结构查找sym文件,你得先做这一步:- 打开你的
breakpad_testing.sym文件,第一行应该是类似这样的格式:MODULE <系统平台> <架构> <模块ID> <二进制文件名>
比如MODULE Linux x86_64 123456ABCDEF breakpad_testing - 创建对应的目录结构:
./symbols/breakpad_testing/<模块ID>/,把你的breakpad_testing.sym文件放到这个目录里。
举个例子,如果模块ID是123456ABCDEF,那目录就是./symbols/breakpad_testing/123456ABCDEF/,sym文件放在里面。
- 打开你的
第二步:用minidump_stackwalk解析dump文件
找到Breakpad编译出来的minidump_stackwalk工具(如果之前编译Breakpad的时候没单独跳过,这个工具应该和dump_syms在一起),执行以下命令:./minidump_stackwalk your_test_dump.dmp ./symbols执行完之后,终端就会输出详细的堆栈跟踪信息,包括异常发生的位置、调用栈的每一层函数名和对应的代码行号(如果你的二进制带完整调试信息的话)。
额外提示
- 如果找不到
minidump_stackwalk,可以重新编译Breakpad,编译时默认会生成这个工具。 - 确保你生成sym文件用的是带调试信息的二进制文件(也就是编译时加了
-g参数的版本),否则堆栈信息可能不全或者没有行号。
- 如果找不到
内容的提问来源于stack exchange,提问作者mbradber
相关产品推荐
相关产品推荐

