我编写了一个引发 C++ 异常的小型测试程序。我已经设置了 Breakpad 来为这个抛出的异常编写一个小型转储。我现在有一个想要查看堆栈跟踪的 .dmp 文件。一些参考资料表明我应该这样做。
- 使用我已经完成的 Breakpad 的 'dump_syms' 实用程序生成一个 .sym 文件。我在调试二进制文件上运行 dump_syms (应该内置调试符号?)。
./dump_syms breakpad_testing > breakpad_testing.sym
此时我有 .dmp 文件和 .sym 文件
- 检查 .sym 文件的第一行以查看以获取二进制版本哈希?这看起来像这样 -
MODULE mac x86_64 ED3C7C3C3C283C749036117557E0A8500 breakpad_testing
。 - 使用它来创建预期的文件夹结构
mkdir -p ./symbols/breakpad_testing/ED3C7C3C3C283C749036117557E0A8500
并将 .sym 文件移动到那里。mv breakpad_testing.sym ./symbols/breakpad_testing/ED3C7C3C3C283C749036117557E0A8500
- 使用“minidump_stackwalk”工具显示堆栈。
minidump_stackwalk breakpad_testing.dmp ./symbols
然而,这些步骤似乎对 minidump_stackwalk 的输出没有任何影响,我仍然看到输出行,例如minidump.cc:2122: INFO: MinidumpModule could not determine version for /Users/mb/Library/Developer/Xcode/DerivedData/<blah>/Build/Products/Debug/breakpad_testing
和未符号化的堆栈跟踪。
关于 OSX 上的 Breakpad,我有什么误解或没有正确使用吗?
这是我一直关注的参考资料之一https://blog.inventic.eu/2012/08/qt-and-google-breakpad/