通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

1.app提交上线之后要把打包中对应的.dSYM和二进制文件保存好,以后可以通过这两个东西追踪到app在用户使用时发生的错误,版本一定要对应好

通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

 

2.打开友盟的错误列表 找到一个错误,比如

通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

如果错误类型是通过dSYM和二进制文件 外加友盟统计 跟踪app的错误就可以放弃了 这种异常崩溃错误原因可能很多 追踪不到

 

3.复制错误

通过dSYM和二进制文件 外加友盟统计 跟踪app的错误黄色加后面的东西复制通过dSYM和二进制文件 外加友盟统计 跟踪app的错误通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

并把通过dSYM和二进制文件 外加友盟统计 跟踪app的错误替换成你自己的dSYM文件名通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

 

4.打开终端 cd到存放.dSYM和二进制的文件夹 然后把刚才复制修改完的东西粘贴上去通过dSYM和二进制文件 外加友盟统计 跟踪app的错误回车

 

5.现在可以找问题了

通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

可以看出通过dSYM和二进制文件 外加友盟统计 跟踪app的错误问题就出在这个地方的40行

通过dSYM和二进制文件 外加友盟统计 跟踪app的错误

问题就出在这里,因为SDWebImage的版本有点老 所以在这里崩溃了,重新下一个最新的替换掉.

问题就解决了.谢谢涛哥的指导~

 
 
 
 
 

从友盟中, 我们可能会得到如下信息:

Application received signal SIGSEGV

0x1153b9 _mh_execute_header + 1131449
	5   libsystem_c.dylib                   0x32d407e3 _sigtramp + 38
	6   NxxMovie                          0x390fb _mh_execute_header + 229627
	7   CoreFoundation                      0x358931fb -[NSObject performSelector:withObject:] + 42
	8   NxxMovie                          0x175a5 _mh_execute_header + 91557
	9   CoreFoundation                      0x358931fb -[NSObject performSelector:withObject:] + 42
	10  Foundation                          0x35457747 __NSThreadPerformPerform + 350
	11  CoreFoundation                      0x35908ad3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
	12  CoreFoundation                      0x3590829f __CFRunLoopDoSources0 + 214
	13  CoreFoundation                      0x35907045 __CFRunLoopRun + 652
	14  CoreFoundation                      0x3588a4a5 CFRunLoopRunSpecific + 300
	15  CoreFoundation                      0x3588a36d CFRunLoopRunInMode + 104
	16  GraphicsServices                    0x37526439 GSEventRunModal + 136
	17  UIKit                               0x33396cd5 UIApplicationMain + 1080
	18  NxxMovie                          0x31b7 _mh_execute_header + 8631
	19  NxxMovie                          0x3150 _mh_execute_header + 8528
)

dSYM UUID: FF67F6D3-C71C-3A7D-9C4C-C4FFBF8EEEB9
CPU Type: armv7
Slide Address: 0x00001000
Binary Image: NxxMovie
Base Address: 0x000f4000
由于这类的崩溃信息通常难以重现, 没有任何的重现步骤,所以我们得找到发布该版本时的原始代码,可能会需要回朔到以前的SVN或者Git版本。

然后找到当时上传代码时使用的DYSM文件,这文件通常在.xcarchive文件中。 右键该文件, 然后通过Terminal工具cd到

cd /Users/heqin/Downloads/xxxMovie2.0.0_apps_0605_2104\ 13-6-5\ 下午9.02.xcarchive/dSYMs/xxxMovie.app.dSYM/Contents/Resources/DWARF

注意:1。对于成功生成archvie的项目, 在这个archive的包中, 是可以通过显示包内容, 看到DSYMs文件夹和一个products文件夹, 继续显示DSYMs文件夹下,可以看到一个xxx.app.DSYM文件,继续对它显示包内容,可以看到Contents/Resources /DWARF/xxxx文件, 这个文件是编译后的二进制文件,通过它可以进行反编译,从而找到二进制对应的源码位置。

2。 在xcode中,archive成功后, 会在Organizer界面中的Archives下, 可以看到所有的archive文件, 右键Show in Finder可以找到这个文件。


然后执行atos -arch armv7 -o xxxMovie 0x1153b9. 就可以看到这处内存地址反编译回来的源码行。

可以有效地帮助分析原因。