zoukankan      html  css  js  c++  java
  • 通过崩溃trace来查找问题原因

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

    Application received signal SIGSEGV

    (null)
    (
    	0   CoreFoundation                      0x359348a7 __exceptionPreprocess + 186
    	1   libobjc.A.dylib                     0x37cdb259 objc_exception_throw + 32
    	2   CoreFoundation                      0x35934789 +[NSException raise:format:] + 0
    	3   CoreFoundation                      0x359347ab +[NSException raise:format:] + 34
    	4   NxxMovie                          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. 就可以看到这处内存地址反编译回来的源码行。

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

  • 相关阅读:
    中国百年校服史:青春飞扬的几代人[转]
    关于五笔和拼音输入法的最本质区别
    Windows Mobile device 开发详解..
    生成目录树
    安装CE 6.0和VS2005出现的两个问题解决
    在c与c++下struct的区别,已经在c++下struct与class的区别。
    一招克死所有病毒!上网不用防火墙.不看后悔哟
    VC解析XML文件
    pythonday1笔记
    an error occurred while completing process java.lang.reflect.InvocationTargetEx
  • 原文地址:https://www.cnblogs.com/yeshanghai/p/3885346.html
Copyright © 2011-2022 走看看