Xcode独自のツールsymbolicatecrash iOS Crashファイルの解析

4265 ワード

一、紹介

  • シンボルテーブルは何ですか?
  • とは、Xcodeプロジェクトのコンパイル後にコンパイル生成されたバイナリファイルをいう.appの同級ディレクトリの下で生成する同名の.dSYMファイル.dSYMファイルは実は1つのディレクトリで、サブディレクトリに16進数の関数アドレスマッピング情報を保存する中継ファイルが含まれており、すべてのDebugのsymbolsがこのファイル(ファイル名、関数名、行番号などを含む)に含まれているので、 とも呼ばれます.一般的に、Xcodeプロジェクトはコンパイルするたびに、新しいものが生成される.dSYMファイル.したがって、Appの各リリースでは、対応するバックアップが必要となる.dSYMファイルは、後でデバッグして問題を特定するために使用されます.

    二、crashログの符号化


    1、準備:
  • symbolicatecrashスクリプトツール
  • 次のコマンドを実行します.
    find /Applications/Xcode.app -name symbolicatecrash -type f
    

    symbolicatecrashスクリプトツールパスを取得し、そのパスを押してツールを見つけます.
    /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
    
  • xxx.crash(crashログ)
  • 1.デバイスが身近にある場合は、Xcode-Window-Devices and Simulaters-View Devices Log Organizerを開き、時間順にcrashログを表示します.
    2、アプリケーションがApp Storeを発行した場合、ユーザーがインストールして使用する前に開発者はiTunes Connectでクラッシュログを表示することができ、その後アップルはXcodeにあなたのアカウントにログインし、Xcode-Window-organizer-Crashesを開く方法に変更した.
    (PS:しかし、多くの送信者はこれに依存していません.これは、ユーザーデバイス上で関連情報のアップロードに同意する必要があるためです.すべてのiPhoneユーザーが診断レポート(crashログ)の送信を許可しているわけではないことを考慮し、Appleのcrashログの一部を提出する場合、開発者は手動で引き出し、対応するシンボルファイルを見つけて解析する必要があります.これは煩わしいことです.したがって、実際のプロジェクトでは、通常、既存のcrash収集ツールにアクセスしたり、自動化収集、解析、統計要約を作成したりします.したがって、実際のプロジェクトでは、通常、既存のcrash収集ツールにアクセスしたり、自動化収集、解析、統計要約を作成したりします.)
  • xxx.app.dSYM

  • Xcode-Window-Organizer-Archivesで、対応するバージョンを見つけてShow in Finderを右クリックしてxxxを見つけます.xcarchiveパッケージの内容を右クリックし、dSYMsフォルダを見つけます
  • xxx.app

  • プロジェクト内のProductsディレクトリ
    2、操作:
    同じディレクトリの下に置いて、コマンドを実行します.
    ./symbolicatecrash xxx.crash xxx.app.dSYM > Control_symbol.crash
    
    export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
    

    三、シンボル化されたcrashログを分析する


    1、デバイスとcrash情報
    Incident Identifier: F3573A...E2F244A              //crash id
    CrashReporter Key:   cc2298...es77eeb              //crash id
    Hardware Model:      iPhone7,2                     // 
    Process:             [AppName] [1816]              //APP [ id]
    Path:                /private/.../Application...   //APP 
    Identifier:          com....                       //bundle ID
    Version:             14 (2.3.5)                    // 
    Code Type:           ARM-64 (Native)               //app ,^_^
    Parent Process:      launchd [1]
    
    Date/Time:           2015-10-26 15:03:29.29 +0800    //crash 
    Launch Time:         2015-10-26 14:58:28.28 +0800    // 
    OS Version:          iOS 9.1 (13B143)                //iOS 
    Report Version:      105
    

    2、異常情報
    Exception Type:  EXC_BAD_ACCESS (SIGABRT)                      // 
    Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000118  // 
    Triggered by Thread:  0                    // (0 , )
    

    3、スレッド情報
    Last Exception Backtrace:
    0   CoreFoundation                    0x182780f48 __exceptionPreprocess + 124
    1   libobjc.A.dylib                   0x197333f80 objc_exception_throw + 56
    2   CoreFoundation                    0x182780e90 +[NSException raise:format:] + 120
    3   [AppName]                            0x100c42a40 UmengSignalHandler + 144
    4   libsystem_platform.dylib          0x197d6193c _sigtramp + 52
    5   [AppName]                            0x1005d9f38 CScopePtr::operator IAVGAudioLogic*() (xprefc.h:165)
    6   [AppName]                            0x1005d3b8c tencent::av::AVRoomMultiImpl::GetAudioLogic() (av_room_multi_impl.h:119)
    7   [AppName]                            0x10057076c tencent::av::AVAudioCtrlImpl::SetAudioOutputMode(int) (av_audio_ctrl_impl.cpp:443)
    8   [AppName]                            0x10044dc3c -[AVBasicManager changeSpeakerMode:] (AVManager.mm:525)
    9   [AppName]                            0x100296e1c -[KTQAVRoom enableSpeakerMode:] (KTQAVRoom.m:345)
    10  [AppName]                            0x1002970d0 -[KTQAVRoom settingSpeaker:] (KTQAVRoom.m:362)
    11  [AppName]                            0x1003d5464 -[KTChatView onAudioNotificationReceived:] (KTChatView.m:685)
    

    四、友盟SDKへのアクセス


    参照リンク:http://www.jianshu.com/p/12a2402b29c2