我正在为 Android 应用程序的原生崩溃报告集成 breakpad,该应用程序已经有一个重要的原生代码库,该代码库内置在一个单一的 so 中。我已经为此添加了 breakpad 静态库,并且当报告本机崩溃时,我能够生成 dmp 文件。但是本机 dmp 很小(3-4 KB),并且 minidump_stackwalker 给出以下错误:
myadav11$ minidump_stackwalk 5f9221b3-75f2-c305-2dde0eb7-1724e335.dmp
minidump.cc:4811: INFO: Minidump opened minidump 5f9221b3-75f2-c305-2dde0eb7-1724e335.dmp
minidump.cc:4931: INFO: Minidump not byte-swapping minidump
minidump.cc:5414: INFO: GetStream: type 15 not present
minidump.cc:5414: INFO: GetStream: type 7 not present
minidump.cc:5414: INFO: GetStream: type 7 not present
minidump.cc:5414: INFO: GetStream: type 1197932545 not present
minidump.cc:5414: INFO: GetStream: type 6 not present
minidump.cc:5414: INFO: GetStream: type 1197932546 not present
minidump.cc:5414: INFO: GetStream: type 4 not present
minidump.cc:5414: INFO: GetStream: type 14 not present
minidump.cc:5414: INFO: GetStream: type 5 not present
minidump.cc:5414: INFO: GetStream: type 3 not present
minidump_processor.cc:158: ERROR: Minidump 5f9221b3-75f2-c305-2dde0eb7-1724e335.dmp has no thread list
minidump_stackwalk.cc:97: ERROR: MinidumpProcessor::Process failed
minidump.cc:4783: INFO: Minidump closing minidump
myadav11$
我有一个 Android breakpad 测试应用程序,它使用相同的编译器和链接器标志,并且能够生成大约 300 KB 的正确 dmp 文件。我曾尝试使用 Android Studio C++ 调试器调试 breakpad 代码,我注意到子进程 breakpad 产生,并以错误结束,并且似乎将调试器同时附加到子进程并不容易。
我看过breakpad支持,也有人提到过类似的问题,但没有讨论解决方案。任何帮助将不胜感激。