Android Breakpad dmp 文件损坏/不完整

Posted

技术标签:

【中文标题】Android Breakpad dmp 文件损坏/不完整【英文标题】:Android Breakpad dmp file broken/incomplete 【发布时间】:2017-06-08 10:01:57 【问题描述】:

我正在为一个 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 的支持,并且提到了类似的问题,但没有讨论任何解决方案。任何帮助将不胜感激。

【问题讨论】:

问题追溯到github.com/google/breakpad/blob/master/src/client/linux/… line 'if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) return false; ' 在最新的 master 中修复 【参考方案1】:

https://groups.google.com/forum/#!topic/google-breakpad-discuss/sjhy29LK5TU 最新的 breakpad master 分支已修复。如果无法为 ARM linux 端口转储浮点寄存器,它会继续进行

【讨论】:

以上是关于Android Breakpad dmp 文件损坏/不完整的主要内容,如果未能解决你的问题,请参考以下文章

案例:Oracle exp dmp文件损坏 通过CPFL工具抽取dmp中的数据表进行恢复

案例:Oracle exp dmp文件存在坏块并损坏 使用CPFL跳过坏块并成功导入恢复

android原生崩溃,手机记录google-breakpad报告,但如何阅读并找到原因?

android 抓取native层奔溃

oracle数据库有dmp备份文件,怎么把备份的dmp文件恢复?

google breakpad使用心得