Mac下dmp文件分析

写这篇文章参考了使用 Google Breakpad 来助力解决程序崩溃-腾讯云开发者社区-腾讯云

xcode编译生成的dylib给electron项目使用,崩溃后根据dmp文件来定位dylib崩溃的地方。

1、编译dylib的时候设置生成dwarf with dsym file格式的调试信息

2、编译后找到生成的dylib和dsym文件。

3、下载breakpad代码编译

git clone https://github.com/google/breakpad.git​​​​​​

./configure --prefix="/Users/luobo/tmp/breakpad"

make

make install

这一步生成了下面3个可执行文件

4、打开/Users/luobo/breakpad/src/tools/mac/dump_syms目录下的dump_syms.xcodeproj编译生成dump_syms文件

5、将dylib,dsym,minidump_stackwalk,dump_syms,dmp文件都放到一个目录

执行下列步骤:

1)./dump_syms -a x86_64 libLiveTranslate.dylib.dSYM > libLiveTranslate.dylib.sym

这一步生成了可读的符号表文件.sym

libLiveTranslate.dylib.sym不能写成libLiveTranslate.sym,而且libLiveTranslate也不能改,要和自己的原始文件名一致,x86_64根据自己的文件的架构来

2)head -n1 libLiveTranslate.dylib.sym

输出MODULE mac x86_64 E4CDCC10BABC3DD7B4979479B14B07D70 libLiveTranslate.dylib

3)mkdir -p symbols/libLiveTranslate.dylib/E4CDCC10BABC3DD7B4979479B14B07D70

(E4CDCC10BABC3DD7B4979479B14B07D70是上一步输出的,libLiveTranslate.dylib不要写错,根据自己的文件名修改)

4)mv libLiveTranslate.dylib.sym symbols/libLiveTranslate.dylib/E4CDCC10BABC3DD7B4979479B14B07D70

5)./minidump_stackwalk 9a2bf54f-281f-4e57-8889-91dfea49138e.dmp symbols > crashed9a2bf54f-281f-4e57-8889-91dfea49138e.log

minidump_stackwalk不要弄成microdump_stackwalk了

6、打开crashed9a2bf54f-281f-4e57-8889-91dfea49138e.log文件查看崩溃堆栈,我的如下:

我们可以看到它崩溃在miniaudio.h的13577行。

7、如果无法定位到指定崩溃的行号,可能是符号表查找失败,我们观察一下控制台的输出,有可能是上面路径没写对。

找不到符号表的输出:

2023-11-20 10:21:05: simple_symbol_supplier.cc:199: INFO: No symbol file at symbols/libLiveTranslate.dylib/E4CDCC10BABC3DD7B4979479B14B07D70/libLiveTranslate.dylib.sym

2023-11-20 10:21:05: stackwalker.cc:108: INFO: Couldn't load symbols for: libLiveTranslate.dylib|E4CDCC10BABC3DD7B4979479B14B07D70

正确找到symbol输出

2023-11-20 10:31:40: source_line_resolver_base.cc:244: INFO: Loading symbols for module /Library/WebServer/Documents/code/electron-vue/extraResources/libLiveTranslate.dylib from memory buffer, size: 75339180

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值