崩溃分析学习(未完)

内容分别摘自http://www.jianshu.com/p/17fd659df460
http://www.jianshu.com/p/fd537d2dde89 http://www.jianshu.com/p/746184ea5662

崩溃分析

加入友盟统计功能后,友盟后台会有一个错误分析的统计项,点进去之后可以查看项目的错误报告, 错误报告如下

-[NSNull count]: unrecognized selector sent to instance 0x3a491a60
(null)
(
    0   CoreFoundation                      0x2f981e9b  + 154
    1   libobjc.A.dylib                     0x39cde6c7 objc_exception_throw + 38
    2   CoreFoundation                      0x2f9857b7  + 202
    3   CoreFoundation                      0x2f9840af  + 706
    4   CoreFoundation                      0x2f8d2dc8 _CF_forwarding_prep_0 + 24
    5   WeChatHelper                         WeChatHelper + 245693
    6   WeChatHelper                         WeChatHelper + 26969
    7   libdispatch.dylib                   0x3a1c30c3  + 10
    8   libdispatch.dylib                   0x3a1c30af  + 22
    9   libdispatch.dylib                   0x3a1c59a9 _dispatch_main_queue_callback_4CF + 268
    10  CoreFoundation                      0x2f94c5b1  + 8
    11  CoreFoundation                      0x2f94ae7d  + 1308
    12  CoreFoundation                      0x2f8b5471 CFRunLoopRunSpecific + 524
    13  CoreFoundation                      0x2f8b5253 CFRunLoopRunInMode + 106
    14  GraphicsServices                    0x345ef2eb GSEventRunModal + 138
    15  UIKit                               0x3216a845 UIApplicationMain + 1136
    16  WeChatHelper                         WeChatHelper + 391591
    17  libdyld.dylib                       0x3a1d7ab7  + 2
)

dSYM UUID: A925ED33-1D32-392F-BD92-52623DCE51A3
CPU Type: armv7s
Slide Address: 0x00004000
Binary Image: WeChatHelper
Base Address: 0x00059000

1、首行为错误原因
2、如第5行WeChatHelper为工程名(app名)
3、淡绿色为错误代码的地址
4、dSYM UUID,这个是dSYM文件的唯一标识。dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件。
5、CPU Type. 定位错误的时候,我们也需要用到这个参数。

定位错误代码,我们需要将 xx.app 和 xx.app.dSYM 文件找出来.

1、在Windows->Organizer->archivers可以看到你的每一次的打包。然后选择你要查看的错误报告所在的版本。
2、show in Finder


1295037-73325372cf6ef110.png

3、再右键选择显示包内容,这时我们看到 有dSYMs,Products,SCMBlueprint三个文件夹,需要用到的是前两个文件夹。
4、此时,将这俩文件夹中最里层的文件都取出来,放到一个新的文件夹中

972702-8e0ebce72861573b.png

方一

5、.打开终端,cd到刚才新建的文件夹(错误报告)的目录下
输入命令xcrun atos -arch armv7s -o xxxx.app/xxxx 0x10019bc48
armv7s 是友盟错误里面的 CPU Type: armv7s
xxxx对应的是你的工程名
0x0004af6f 是错误信息地址、淡绿色的那个内存地址

972702-a684e685466a45c0.png

-[SubscribeViewController isSubcribeSuccess:] (in woshiPM) (SubscribeViewController.m:342)就是错误代码的位置,在SubscribeViewController.m中的isSubcribeSuccess方法中,342是代码所在的行数。

方二:

下面这是项目里通过友盟统计到的崩溃日志,如果光看这些日志报告的话,是不会知道是哪行代码引起的。使用方法是把对应版本(上文所述show in Finder 后看到的文件)的.xcarchive文件拖到工具。对比UUID和友盟里日志是否一致,一致就把错误的地址信息拷贝到箭头处。
即可得出具体代码崩溃位置。


1920099-ef180c0306c063cf.png

1、1.将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格) PS. 位置 : /Users/用户名/Library/Developer/Xcode/Archives
2.选中对应版本的xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型。
3.对比错误给出的UUID和工具界面中给出的UUID是否一致。
4.将错误地址以及 Slide Address 输入工具的文本框中,点击分析。
dSYM分析工具 传送门 :GitHub - answer-huang/dSYMTools: dSYM analyze
举例 : 对应友盟 错误详情 截图, 将 dSYM的UUID, 首次错误内存地址, Slide Arrdress, CPU Type 填入该应用中

2368070-024880af89d3ec93.png
2368070-cdccd8217a34ab24.png

可以看到错误定位 在 240行, 为方法中的具体代码, 分析错误类型, 对比代码, 解决问题

还有一种崩溃日志如下(看不到具体位置):

*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds for empty array
*2016-10-19 21:48:02---[ 
0 CoreFoundation 0x0000000186d325b8 (redacted) 160, 
1 libobjc.A.dylib 0x00000001974400e4 objc_exception_throw 60, 
2 CoreFoundation 0x0000000186c1762c (redacted) 0, 
3 GyyxGuangYuTong 0x00000001000e79e0 GyyxGuangYuTong 440800, 
4 UIKit 0x000000018b60cca4 (redacted) 1280, 
5 UIKit 0x000000018b6ca5f0 (redacted) 276, 
6 UIKit 0x000000018b566e80 (redacted) 356, 
7 UIKit 0x000000018b4d8794 (redacted) 532, 
8 CoreFoundation 0x0000000186ceaa50 (redacted) 32, 
9 CoreFoundation 0x0000000186ce79dc (redacted) 360, 
10 CoreFoundation 0x0000000186ce7dbc (redacted) 836, 
11 CoreFoundation 0x0000000186c150a4 CFRunLoopRunSpecific 396, 
12 GraphicsServices 0x000000018fdbf5a4 GSEventRunModal 168, 
13 UIKit 0x000000018b54a3c0 UIApplicationMain 1488, 
14 GyyxGuangYuTong 0x0000000100098854 GyyxGuangYuTong 116820, 
15 libdyld.dylib 0x0000000197aaea08 (redacted) 4 ]

注意这一行

3 GyyxGuangYuTong 0x00000001000e79e0 GyyxGuangYuTong 440800,
14 GyyxGuangYuTong 0x0000000100098854 GyyxGuangYuTong 116820,

我们要找具体的崩溃地方就要从这里来找。

GyyxGuangYuTong 这个是app名 也就是你的app的名字
0x00000001000e79e0 这个是崩溃的内存地址
440800 这个应该是一个偏移量

以上情况在使用dsym工具时:

随便选择一个版本,错误内存地址就填写上面的0x00000001000e79e0,而slide Address 需要计算:slide Address十进制= 0x00000001000e79e0 转换十进制 - 后面的偏移量,然后将slide Address十进制 转换为十六进制,注意计算的时候把0X去掉 这是16进制的标志~~~,那就是00000001000e79e0
转换后的十进制为4295916000 然后- 偏移量440800,得到十进制address:4 295 475 200,转换为16进制:0x10007c000
然后点击分析

1295037-aafe35c456ae5abb.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容