我有一个小qt项目 https://github.com/apalomer/qt_crashpad_test我想跟踪一个分段错误(这是一个示例,分段错误是出于测试目的而手动添加的,在实际项目中我不知道留在那里的分段错误)。我决定使用 google crashpad,这样我就可以创建小型转储文件,然后跟踪计算机上的问题。我已经在 Windows 中通过示例项目成功地做到了这一点。但是,我无法打开dmpLinux 中的文件来调试它们。
我尝试过使用小型转储-2-核心 https://chromium.googlesource.com/chromium/src.git/+/62.0.3178.1/docs/linux_minidump_to_core.md如中所解释的这个博客 https://developer.mozilla.org/en-US/docs/Mozilla/Debugging/Debugging_a_minidump在该部分在 Linux 上使用 minidump-2-core。但是,当我运行此命令时,出现以下错误:This minidump was not generated by Linux or NaCl.
显然我使用的是 Ubuntu 18.04 的同一台计算机来运行生成的代码dmp文件并将其转换为核心文件。
关于如何转换的任何想法dmp文件到我可以放入 gdb 进行调试的东西?或者更一般地说,如何继续处理由 linus 中的 google crashpad 创建的 tese 文件?
你会想要建造minidump_stackwalk
这是来自 Breakpad 存储库的命令行工具。您还需要生成.sym
文件使用dump_syms
这是 Breakpad 存储库中的另一个工具。
一旦你生成了.sym
您需要按照约定将它们放置在磁盘上的文件/path/to/symbols/folder/MODULE_NAME/MODULE_ID/MODULE_NAME.sym
.
一旦符号文件被放置在正确的文件夹结构中,您就可以调用minidump_stackwalk
它将输出符号化的堆栈跟踪和运行时加载的模块列表:
./minidump_stackwalk -m /path/to/minidump.dmp /path/to/symbols/folder
有关如何使用的更多信息minidump_stackwalk
可以被找寻到here https://www.bugsplat.com/docs/sdk/crashpad/building/#symbolicating.
有关如何使用的更多信息dump_syms
可以被找寻到here https://www.bugsplat.com/docs/sdk/crashpad/building/#generating-symbols.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)