iOS 如何找到或生成 .dSYM 文件
系统崩溃日志或者手机奔溃日志字段解释

第三方日志包含:友盟日志,talkingdata日志…

我这里以 talkingdata日志 举例:

reason: -[NSTaggedPointerString stringValue]: unrecognized selector sent to instance 0xa000038363133355
callStackSymbols: (0   CoreFoundation                      0x000000018f2caff0 <redacted> + 1481   libobjc.A.dylib                     0x000000018dd2c538 objc_exception_throw + 562   CoreFoundation                      0x000000018f2d1ef4 <redacted> + 03   CoreFoundation                      0x000000018f2cef4c <redacted> + 9164   CoreFoundation                      0x000000018f1cad2c _CF_forwarding_prep_0 + 925   XFKD                                0x000000010011e614 XFKD + 1074708 // 崩溃地址6   XFKD                                0x000000010011ed64 XFKD + 1076580 // 崩溃地址7   XFKD                                0x000000010011de2c XFKD + 1072684 // 崩溃地址8   libdispatch.dylib                   0x000000018e1829e0 <redacted> + 249   libdispatch.dylib                   0x000000018e1829a0 <redacted> + 1610  libdispatch.dylib                   0x000000018e1910d4 <redacted> + 64411  libdispatch.dylib                   0x000000018e192a50 <redacted> + 54012  libdispatch.dylib                   0x000000018e1927d0 <redacted> + 12413  libsystem_pthread.dylib             0x000000018e38b1d0 _pthread_wqthread + 109614  libsystem_pthread.dylib             0x000000018e38ad7c start_wqthread + 4
)Process name: XFKD // App包名
dSYM UUID: B2707119-9ED6-35CB-B3B4-A9902B5CE8C0 // 当前 dSYM UUID
Architecture: arm64 // 当前的手机环境
Start Address: 0x100018000 // 起始地址
Slide Address: 0x18000 // 偏移地址

我们得到这个之后,那么久需要去找对应的. xcarchive文件,也就是你发布的时候留下的包,这个包的位置就在 Xcode->Window->Organizer,到了 Organizer 之后找到你对应的版本,也就是你这个BUG出现在哪个版本的包里,找到它之后 Show In Finder, 进入 . xcarchive 文件,在继续右键 显示包内容,找到:

如果,你不能确定这个BUG是这个包产生的,那么可以通过比较 dSYM UUID 来确定:

BUG的 dSYM UUID :B2707119-9ED6-35CB-B3B4-A9902B5CE8C0
BUG的 Architecture :arm64

我们可以将 xxxx.app.dSYM 文件拷贝出来放到一个新建的文件夹里面,这样方便我们操作。打开命令行工具 cd 到这个存放了 xxxx.app.dSYM 文件目录下,
比方我创建了一个 Test 文件夹存放 xxxx.app.dSYM, 那么我只需要 cd 到 Test 文件里面即可,好了,下一步我们打印这个 xxxx.app.dSYM 的 dSYM UUID,看看是否跟BUG的 dSYM UUID 是否一致

dwarfdump --uuid /Test/XFKD.app.dSYM

这行命令之后就会输入

UUID: F83F652E-4525-3052-A2E3-A74E7EC32E58 (armv7)
UUID: B2707119-9ED6-35CB-B3B4-A9902B5CE8C0 (arm64)

我们只需要比较BUG的 arm64 状态下的 UUID,那么它们是一致的。那么我们下面就开始来定位日志闪退位置。

atos -o XFKD.app.dSYM/Contents/Resources/DWARF/XFKD -arch arm64 -l 0x100018000 0x000000010011e614

其中 0x100018000:起始地址 0x000000010011e614:崩溃地址
崩溃地址一般为 崩溃信息中首行与你的App包名相关的地址 就是该例子中首行与 AppName 相关的地址信息(也就是崩溃信息中带有 XFKD 的567行)。
最后输出:

closure #1 in static KTTLog.insert(_:_:_:_:_:_:_:_:_:) (in XFKD) (KTTLog+Version.swift:30)

就是说crash的位置在 KTTLog+Version 文件中的 第30行。

最后我也还告诉一下大家在使用第三方工具定位日志的时候 dSYMTools 这个工具,不知道是不是我不会用还是使用有问题,我这边发现 dSYMTools 自己扫描出来的 dSYM UUID 始终无法跟正确的 xxxx.app.dSYM 文件里面或者是BUG的 dSYM UUID 对应上,也就是说工具上的 dSYM UUID 跟 文件或者BUG的 dSYM UUID 对应不上,就导致定位不了,很郁闷,不知道是不是我使用有问题,如果有会使用 dSYMTools 请告诉我下原因。

iOS 第三方dSYM定位BUG相关推荐

  1. iOS 利用dSYM定位crash

    What is dSYM ? xCode 的每一次编译都会生成一个dsym文件,在其内部存储了16进制函数地址的映射. 在App实际执行的二进制文件中,是通过地址来调用方法,所以在App Crash ...

  2. 在 iOS 客户端上通过 bitcode 为第三方库修复 bug

    摘要 本文主要记录了 iOS 移动端的一个疑难 bug 的排查过程,以及介绍通过给 bitcode 打补丁重新生成机器码,为有问题的第三方库修复 bug 的方法. 主要涉及到的知识点如下: ARM 汇 ...

  3. 常用的iOS第三方框架

    转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与To ...

  4. Android11键盘弹出动画,(2016-11-04完美解决)移动端iOS第三方输入法遮挡底部input及android键盘回落后留白问题...

    问题概述 问题1:H5 web 移动端 输入框, 键盘唤起后fixed定位好的元素跟随页面滚动了起来- fixed属性失效了!满屏任性横飞, 如下图: 问题2:有几后来含些在到气时按式近篇来又的方浏消 ...

  5. fir.im Weekly - 热门 iOS 第三方库大盘点

    本期 fir.im Weekly 收集的热度资源,大部分关于www.gyjqfkyy.comAndroid.iOS 开发工具.源码和脑洞大开的 UI 动画,希望给你带来更多的工作创意与灵感. 盘点国内 ...

  6. 结合正则 抓取的iOS 第三方

    +++++抓取方法在后面+++++ 第三方 用途 EGOTableViewPullRefresh 最早的下拉刷新控件. SVPullToRefresh 下拉刷新控件. XHRefreshControl ...

  7. XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件

    XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件 开发者可以在指定的路径中找到复制的数据库文件,具体的操作步骤如下: (1)单击Mac电脑中Finder菜单中的"前 ...

  8. ios 底部用定位 fixed。在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去。解决方法...

    ios 底部用定位 fixed.在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去.解决方法 $("input").focus(function() ...

  9. 手把手教你使用CocoaPods管理你的iOS第三方开源类库

    手把手教你使用CocoaPods管理你的iOS第三方开源类库 本文转载自:http://kittenyang.com/cocoapods 鉴于我开这个博客的初衷是记录自己平时的技术积累,而我平时又属研 ...

最新文章

  1. python拟牛顿法迭代点绘制_拟牛顿法python
  2. 进程,线程,消息循环的关系
  3. 单片机小白学步系列(三) 偶遇51单片机
  4. 【离散化】【DP】命运石之门的选择
  5. 前端学习(2790):封装商品组件并且使用
  6. php 删除字符串中链接_python面试——删除字符串中的“b”和“ac”,删除后无b和ac(CloudIn(云英)面经)...
  7. mybatis多条件批量查询_Mybatis【14】 Mybatis如何实现一对多查询?
  8. python切片长度_python的间隔切片技巧
  9. 用user-selection实现让页面上的内容不能被选中
  10. 不用StringBuilder!Java8的StringJoiner,也很香!
  11. Python被誉为神奇的“胶水语言”,到底神奇在哪?
  12. jmeter性能测试实战_Jmeter接口测试实战篇:10分钟学会Jmeter的用法
  13. 网络营销的方案及技巧
  14. 我的第一本书,被选作大学教材了!
  15. 影响你选择职业的,跟个人相关的主要的因素
  16. 为什么HTTPS比HTTP更安全?
  17. wkhtmltopdf(thead)分页问题
  18. xml中加html源码,XML与HTML的结合(下)_xml
  19. HDOJ 5155 Harry And Magic Box DP
  20. 人类始终无法抗拒的十种心理

热门文章

  1. 一个快捷的计算e的值(第4章-5 求e的近似值 (15分))
  2. STP基础(锐捷、H3C交换机开启STP)
  3. iniparser——C配置文件解析库
  4. 计算机毕业设计Java物流车辆规费管理系统的设计与实现(源码+系统+mysql数据库+Lw文档)
  5. 今日睡眠质量记录73分
  6. mac无法通过触摸版、无法通过鼠标拖曳文件?
  7. GO 学习笔记——第五天 / 异常,文本文件处理
  8. 霍尔传感器磁极的磁场强度计算
  9. 微信小程序滚动居中导航选项卡
  10. android-设置屏幕壁纸