dSYM が New Relic にアップロードされていないと、 モバイル クラッシュ レポート を記号化できません。 dSYM を手動でアップロードしたり、New Relic の UI から直接アップロードすることができます。しかし、アプリケーションのビルドごとに新しいdSYMが作成されるため、どのdSYMがどのアプリのビルドに起因するのかを管理するのは困難な場合があります。
このような状況では、Build UUID識別子を使って
- アプリケーションのユニークなビルドを識別します。
- どのdSYMがクラッシュのシンボリック化に使用できるかを調べます。
ビルドのUUIDを見る
1つのアプリケーションは複数のBuild UUIDを持つことができ、アプリケーションが構築されたCPUアーキテクチャごとに1つのBuild UUIDが割り当てられます。Build UUIDは、関連するdSYM内にも格納され、dSYMを識別するために抽出することができます。
New Relic のクラッシュレポートには、クラッシュしたアプリケーションの Build UUID も含まれています。Build UUID を表示するには。
- one.newrelic.com > All capabilities > Mobileに移動します。 次に、アプリを見つけてCrashes > Crash Analysisをクリックします。
- Crash listテーブルから任意の行を選択します。
- 選択したクラッシュ レポートのCrash Detailsページで、属性リストの
App Image Uuid
を探します。
選択したクラッシュ レポートの属性リストにApp Image Uuid
がない場合:
- 衝突の詳細をエクスポートする.
- エクスポートされたクラッシュ レポートのBinary imagesセクションでビルド UUID を探します。
クラッシュの詳細から抽出したBuild UUIDを使って、不足しているdSYMを見つけます。
バイナリ画像の例
以下は、エクスポートされたクラッシュ レポートのBinary imagesセクションの例です。 このセクションには、アプリケーションに含まれるすべての動的リンク ライブラリのビルド UUID と、メイン アプリケーションのビルド UUID がリストされます。
この例では、メイン アプリケーションはNew Relic
です。そのビルド UUID は117667e7b8d230cb8a908906c64e0227
です。これは、関連する dSYM を見つけるために使用できる識別子です。
Binary Images:0xb1000 - 0x30d000 New Relic armv7 <117667e7b8d230cb8a908906c64e0227> /var/containers/Bundle/Application/New Relic.app/New Relic0x22290000 - 0x22292000 libSystem.B.dylib armv7 <39d6d6f7c2ac3de8bb29c40a1b66368a> /usr/lib/libSystem.B.dylib0x22292000 - 0x222de000 libc++.1.dylib armv7 <017dba6c16b63f9ebecb9ddd0d0a4520> /usr/lib/libc++.1.dylib0x222de000 - 0x222f9000 libc++abi.dylib armv7 <d32373f6c2153a509f6603750d213ffb> /usr/lib/libc++abi.dylib0x222fc000 - 0x22667000 libobjc.A.dylib armv7 <94f6d325c1843f45b3a439b86fc9de15> /usr/lib/libobjc.A.dylib0x22667000 - 0x2266c000 libcache.dylib armv7 <8009f99fb892331dbcb61cd740ff0f43> /usr/lib/system/libcache.dylib0x2266c000 - 0x22676000 libcommonCrypto.dylib armv7 <f6db318471d732d39918ef36bde65cb7> /usr/lib/system/libcommonCrypto.dylib0x22676000 - 0x2267c000 libcompiler_rt.dylib armv7 <cfa3ca12d6c2383abcaf3c8541e9b86c> /usr/lib/system/libcompiler_rt.dylib0x2267c000 - 0x22683000 libcopyfile.dylib armv7 <d2b06020c3693c7b9d179434f8115ba0> /usr/lib/system/libcopyfile.dylib0x22683000 - 0x226d3000 libcorecrypto.dylib armv7 <181437f8d9e53277ace439de8b3fd1ad> /usr/lib/system/libcorecrypto.dylib0x226d3000 - 0x2271d000 libdispatch.dylib armv7 <bbb4bba2176039ab95a59d7a56f6eff8> /usr/lib/system/libdispatch.dylib
dSYMの発見と再記号化
dSYM の dSYM のビルド UUID を見つけるには、次のターミナル コマンドでdwarfdump
を使用します。
$dwarfdump --uuid PATH_TO_dSYM
次の例では、New Relic dSYM は、 ARMv7
とARM64
にそれぞれ 1 つずつ、2 つのビルド UUID を返します。ARMv7
ビルド UUID は、見つからないクラッシュの例のビルド UUID と一致します:
$dwarfdump --uuid ./New\ Relic.app.dSYM/Contents/Resources/DWARF/New\ RelicUUID: 117667E7-B8D2-30CB-8A90-8906C64E0227 (armv7) ./New Relic.app.dSYM/Contents/Resources/DWARF/New RelicUUID: B1A8C6EE-02B9-3C55-AEE7-308521873107 (arm64) ./New Relic.app.dSYM/Contents/Resources/DWARF/New Relic
シンボリック化されていないクラッシュをシンボリック化するには、 手動でdSYM をアップロードする手順に従ってください。