您的位置:首页 > 其它

友盟崩溃日志分析

2017-08-29 12:06 295 查看
对于友盟提供的如下崩溃报告,很难看出是什么地方出了问题,接下来我们一步步通过dsym文件解析崩溃原因;

下面的崩溃报告中的app名称我用appname代替

Application received signal SIGSEGV

(null)

((

0 CoreFoundation 0x000000018236d1d0 + 148

1 libobjc.A.dylib 0x0000000180da455c objc_exception_throw + 56

2 CoreFoundation 0x000000018236d100 + 0

3 appname 0x10017b0e4 SmartFeedFish + 1552612

4 libsystem_platform.dylib 0x00000001813fd338 _sigtramp + 36

**5 appname 0x100022f90 SmartFeedFish + 143248

6 appname 0x100022f90 SmartFeedFish + 143248**

7 UIKit 0x000000018823a834 + 848

8 UIKit 0x000000018823ad98 + 220

9 UIKit 0x00000001882f3130 + 1236

10 UIKit 0x00000001883c40a0 + 232

11 UIKit 0x0000000188349be8 + 116

12 UIKit 0x000000018849a158 + 712

13 UIKit 0x000000018825b5b8 + 492

14 UIKit 0x000000018825b0dc + 312

15 UIKit 0x000000018825aef8 + 160

16 QuartzCore 0x00000001856c97e8 + 260

17 libdispatch.dylib 0x00000001811f61bc + 16

18 libdispatch.dylib 0x00000001811fad68 _dispatch_main_queue_callback_4CF + 1000

19 CoreFoundation 0x000000018231a810 + 12

20 CoreFoundation 0x00000001823183fc + 1660

21 CoreFoundation 0x00000001822462b8 CFRunLoopRunSpecific + 444

22 GraphicsServices 0x0000000183cfa198 GSEventRunModal + 180

23 UIKit 0x000000018828d7fc + 684

24 UIKit 0x0000000188288534 UIApplicationMain + 208

25 appname 0x100097db0 SmartFeedFish + 622000

26 libdyld.dylib 0x00000001812295b8 + 4

)

dSYM UUID: ***************1D-9804-96F6C382533D

CPU Type: arm64

Slide Address: 0x0000000100000000

Binary Image: appname

Base Address: 0x00000001000e8000

从这个崩溃报告中我们可以找多UUID,CPU Type类型,和Slide Address,这个三个数据很重要,下面我们分析:5 appname 0x100022f90 SmartFeedFish + 143248这个数据的崩溃原因,我们只要他的指针地址即可0x100022f90

下面我们还需要一个DSYM文件,这个文件在archives文件里面,你问archives在什么地方,就是你打包app时archives留下的文件,点击window-organizer-archives,里面就是我们经常打包app留下的archives文件,找到和你打包app对应的文件,也就是崩溃的app对应的archives文件,一定不要搞错了,不然找不出错误信息。



我的archive文件是这个,然后鼠标右键show in finder 我们可以看到这个文件存放的地方,




为了避免后面的操作出错,我们这个这个文件复制粘贴的桌面,这样后面操作非常方便,

然后右键显示包内容,我们可以看到几个文件夹,其中有一个dsyms的文件夹,打开这个文件夹你会看到后缀名是dsym的文件。



以上是我们要找的文件,现在正式操作找到崩溃原因,

快上车,没时间解释了,

现在打开终端,根据文件位置输入,先cd到dsyms文件夹,

cd /Users/mymac/Desktop/appname.xcarchive/dSYMs

然后再输入:

dwarfdump - -uuid appname.app.dSYM

这个appname.app.dSYM是dsyms文件夹下的,

然后我们就可以查到他的uuid,这个uuid要和崩溃日志里面的uuid一样才可以,



如果uuid这些都一样,下面就可以输入:

dwarfdump - -arch=arm64 - -lookup 0x100022f90 /Users/mymac/Desktop/appname.xcarchive/dSYMs/appname.app.dSYM/Contents/Resources/DWARF/appname

这句话意思:–arch=arm64手机的cpu类型。–lookup 0x100022f90 我们要解析的崩溃指针友盟里面有,

/Users/mymac/Desktop/appname.xcarchive/dSYMs/appname.app.dSYM/Contents/Resources/DWARF/appname 这个是dysm里面


选中右键显示包内容,打开里面的文件夹,直到最后一个文件。

这个文件



最后终端会给我错误信息

File: /Users/mymac/Desktop/appname.xcarchive/dSYMs/appname.app.dSYM/Contents/Resources/DWARF/appname (arm64)

Looking up address: 0x0000000100022f90 in .debug_info… found!

0x0005a5e4: Compile Unit: length = 0x00003421 version = 0x0002 abbr_offset = 0x00000000 addr_size = 0x08 (next CU at 0x0005da09)

0x0005a5ef: TAG_compile_unit [106] *

AT_producer( “Apple LLVM version 8.1.0 (clang-802.0.42)” )

AT_language( DW_LANG_ObjC )

AT_name( “/Users/mymac/Desktop/代码/新tutk/appname/appname/DeviceControllerViewController.m” )

AT_stmt_list( 0x00012c31 )

AT_comp_dir( “/Users/mymac/Desktop/代码/新tutk/appname” )

AT_APPLE_optimized( 0x01 )

AT_APPLE_major_runtime_vers( 0x02 )

AT_low_pc( 0x0000000100022438 )

AT_high_pc( 0x0000000100026fe0 )

0x0005b7c2: TAG_subprogram [111] *

AT_low_pc( 0x0000000100022ca4 )

AT_high_pc( 0x0000000100022fb0 )

AT_frame_base( reg29 )

AT_object_pointer( {0x0005b7e1} )

AT_name( “-[DeviceControllerViewController viewDidAppear:]” )

AT_decl_file( “/Users/mymac/Desktop/代码/新tutk/appname/appname/DeviceControllerViewController.m” )

AT_decl_line( 151 )

AT_prototyped( 0x01 )

AT_APPLE_optimized( 0x01 )

Line table dir : ‘/Users/appname/Desktop/代码/新tutk/appname/appname’

Line table file: ‘DeviceControllerViewController.m’ line 179, column 13 with start address 0x0000000100022f84

Looking up address: 0x0000000100022f90 in .debug_frame… not found.

可以看到DeviceControllerViewController.m这个文件出了问题,

在这个方法里崩溃了[DeviceControllerViewController viewDidAppear:]

在Line table file: ‘DeviceControllerViewController.m’ line 179, column 13

在179行这个代码

有什么不懂得下面留言

[b]*[/b]到此结束**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: