前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号

macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号

作者头像
24K纯开源
发布2018-01-18 11:09:53
2.6K0
发布2018-01-18 11:09:53
举报
文章被收录于专栏:24K纯开源

一、使用流程

    Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数。macOS下的symbolicatecrash也具备相应的功能。对应于Windows下的pdb文件,macOS下的crash文件解析需要用到dSYM文件。这个文件正常情况下可能不会生成,需要在XCode进行设置。当程序崩溃时,通过symbolicatecrash对crash文件和dSYM文件中的符号进行映射,即可将crash文件中的内存地址转换为可读的字符串。以前的博文中也进行过总结,但是并没有具体实践。这次在macOS下开发的一个程序总是崩溃,于是打算利用dSYM文件来看看到底是哪里崩溃了。

    按照常规套路,先还是把*.crash文件、*.dSYM文件放到一起来,再来调用symbolicatecrash命令。先建立symbolicatecrash的软链接:

    然后运行命令开始解析crash文件:

    提示说“DEVELOPER_DIR”没有定义,那么就给他个定义:

    再次运行命令开始接下工作:

    提示:Unsupported crash log version: 12。往上搜索了一番,并没有什么发现。倒是发现了一些链接转而求其次使用了其他方法,就是不全文解析crash文件。而是解析我们感兴趣的内存地址的符号。其方法是:先找到Image的load address,如下:

    这里我的程序在内存中的加载位置为0x10c680000(尖括号中的字符串是程序的UUID)。再次找到我们感兴趣的内存地址,如下:

     再次运行命令:

    至此即可分析出特定地址的符号了,调试的时候也可以确定大致的位置了。至于为什么不能全文解析crash文件暂时还不清楚。

二、参考链接

1. http://stackoverflow.com/questions/40056263/symbolicate-crash-log-xcode-8-macos-app

2. https://gist.github.com/bmatcuk/c55a0dd4f8775a3a2c5a

3. http://blog.csdn.net/duanyipeng/article/details/46460245

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、使用流程
  • 二、参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档