ほとんどのクラッシュに関する未処理のスタックトレースに含まれる情報は、人間では完全に読み取ることができません。クラッシュのスタックトレースをより簡単に理解できるようにするには、未処理のデータを人間が判読可能な出力に変換できるプラットフォーム固有のマッピングファイルを提供する必要があります。通常は、モバイルアプリケーションをインストゥルメントする時点でファイルをアップロードします。
このページでは、これらのファイルを提供する利点について説明します。
iOS dSYM ファイル
iOS アプリケーションの場合、クラッシュスナップショットに含まれるスタックトレースの未処理データは、実行可能なアプリケーションコードを示すスタックフレームのメモリアドレスで構成されています。また、アプリケーションで使用されるシステムライブラリコードの記号とメモリオフセットも含まれています。このような部分的に記号化されたスタックトレースは、次のようになります。
AppDynamics は、これらの関数にオフセットを使用してスタックトレースと関数名の表示を試行し、アプリケーションがクラッシュしたときに実行されたコードの行を識別できるようにします。実行可能コードにマッピングされている記号を取得するには、クラッシュしたアプリケーションの dSYM(desymbolication)ファイルが必要です。
クラッシュしたアプリケーションの dSYM ファイルがアップロードされている場合、記号化されたスタックトレースには、関数名と、アプリケーションがクラッシュした関数に対するオフセットが表示されます。これは次のようになります。
dSYM ファイルは、アプリケーション ソース コードが DWARF with dSYM file
に設定された状態で Debugging Information Format でコンパイルされたときに作成されます。AppDynamics では、このオプションを使用してモニタするすべての iOS アプリケーションを構築してから、dSYM ファイルを AppDynamics にアップロードすることを推奨しています。これを行うための最善のタイミングは、アプリケーションをインストゥルメントするときです。
クラッシュしたアプリケーションの dSYM がアップロードされている場合、クラッシュリストでは、関連付けられたクラッシュスナップショットの [Symbolicated] 列が true になります。
symbolicated
プロパティが false
で、このアプリケーションのクラッシュスナップショットにわかりやすいスタックトレースを表示する場合、クラッシュしたアプリケーションの dSYM ファイルを特定してアップロードする必要があります。
Android 向け ProGuard マッピングファイル
リバースエンジニアリング防止用として Android アプリケーションが難読化されていない場合、デフォルトで、クラッシュスナップショットに人間が判読可能なスタックトレースを表示する必要があります。
ただし、コードが難読化されていた場合は、AppDynamics にアプリケーションの難読化を解除できるようにする ProGuard マッピングファイルが必要となります。最善の手順は、このファイルをアプリケーションの構築時にアップロードすることです。
ProGuard マッピングファイルがクラッシュしたアプリケーション用にアップロードされている場合、クラッシュリストでは、クラッシュスナップショットの [Deobfuscated] 列が true
になります。
deobfuscated
プロパティが false
で、クラッシュスナップショットに表示されるスタックトレースが難読化されている場合は、アプリケーションのマッピングファイルを特定してアップロードする必要があります。