重要
Visual Studio App Center は、2026 年 6 月 30 日まで引き続きサポートされる分析機能と診断機能を除き、2025 年 3 月 31 日に廃止されました。 詳細を参照してください。
macOS、tvOS、iOS のクラッシュ レポートには、クラッシュが発生した時点でアプリのすべての実行中のスレッドのスタック トレースが表示されます。 スタック トレースにはメモリ アドレスのみが含まれます。クラッシュを理解するために必要なクラス名、メソッド、ファイル名、または行番号ではありません。
メモリ アドレスを変換するには、シンボリック化に必要なすべての情報を含む dSYM パッケージを App Center にアップロードする必要があります。 シンボル化の詳細については、Apple の 公式開発者向けドキュメントを参照してください。
App Center Build and Distribution サービスは、有効な dSYM とソース マップ .zip
ファイルを自動的に生成し、診断サービスにファイルをアップロードできます。 App Center を使用してアプリをビルドし、エンド ユーザーに自動配布する場合、シンボル ファイルを手動で取得してアップロードする必要はありません。
未シンボリック化クラッシュ
App Center Diagnostics セクションには、シンボルをアップロードする前でも幾つかの詳細を確認できるように、シンボル化されていないクラッシュが表示されます。 これらのクラッシュに含まれていないシンボルは、[unsymbolicated] タブに表示されます。不足しているシンボルがアップロードされた場合、シンボル化されていないクラッシュ グループは、シンボル化されたクラッシュ グループに置き換えられます。
.dSYM
バンドルの検索
- Xcode で[ ウィンドウ ]メニューを開き、[ オーガナイザー]を選択します。
- [ アーカイブ ] タブを選択します。
- 左側のサイドバーでアプリを選択します。
- 最新のアーカイブを右クリックし、[ Finder で表示] を選択します。
- Finder で
.xcarchive
ファイルを右クリックし、[ パッケージ コンテンツの表示] を選択します。 - dSYM バンドルを含む
dSYMs
という名前のフォルダーが表示されます。 - dSYM バンドルの zip ファイルを作成します。
Xcode の代わりに Visual Studio を使用している場合は、「 dSYM ファイルを見つけて iOS クラッシュ ログをシンボル化する場所 」を参照して、dSYM ファイルを見つけます。
シンボルのアップロード
App Center ポータル
- App Center にログインし、アプリを選択します。
- 左側のメニューで、[ 診断 ] セクションに移動し、[シンボル] を選択 します。
- 右上隅にある [ シンボルのアップロード ] をクリックし、ファイルをアップロードします。
- シンボルのインデックスが App Center によって作成されると、クラッシュがシンボル化されます。
React ネイティブ iOS アプリ
React Native iOS ファイルのシンボル ファイルを取得するには、Mac の dSYM パッケージとアプリの JavaScript ソース マップを含む ZIP ファイルを作成します。 ソース マップには、 index.ios.map
という名前を付ける必要があります。 次のコマンドを実行すると、リリース ビルドのソース マップが生成されます。
react-native bundle --entry-file index.ios.js --platform ios --dev false --reset-cache --bundle-output unused.jsbundle --sourcemap-output index.ios.map
App Center API
API を介してシンボルをアップロードするプロセスには、一連の 3 つの API 呼び出しが含まれます。1 つはバックエンドに領域を割り当て、1 つはファイルをアップロードし、1 つはアップロードの状態を更新します。 最初の API 呼び出しの本文では、 symbol_type
を Apple
に設定する必要があります。
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
-H 'accept: application/json' \
-H 'X-API-Token: {API TOKEN}' \
-H 'Content-Type: application/json' \
-d '{JSON BODY}'
- 最初の手順から返された
upload_url
プロパティを使用して、ヘッダーを使用してPUT
要求を行います:"x-ms-blob-type: BlockBlob"
し、ディスク上のファイルの場所を指定します。 この呼び出しにより、ファイルがバックエンド ストレージ アカウントにアップロードされます。 PUT BLOB 要求ヘッダーの詳細を確認します。
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
- 最初の手順から返された
PATCH
プロパティを使用して、symbol_uploads API にsymbol_upload_id
要求を行います。 要求の本文で、アップロードの状態をアップロード プロセスのcommitted
(正常に完了) に設定するか、aborted
(正常に完了しなかった) かを指定します。
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
-H 'accept: application/json' \
-H 'X-API-Token: {API TOKEN}' \
-H 'Content-Type: application/json' \
-d '{ "status": "committed" }'
注
シンボルのアップロード API は、256 MB を超えるファイルでは機能しません。 これらのファイルをアップロードするには、App Center CLI を使用します。 App Center CLI リポジトリの手順に従って、 App Center CLI をインストールできます。
App Center CLI
CLI を使用してシンボル ファイルをアップロードすることもできます。
appcenter crashes upload-symbols --symbol {symbol file}
Bitcode
Bitcode は Apple によって導入され、App Store に送信されたアプリを Apple 自体で再コンパイルし、最新の最適化を適用できるようになりました。 Bitcode が有効になっている場合、ストア内のアプリに対して生成されるシンボルは、独自のビルド システムのシンボルとは異なります。
App Center のクラッシュ レポートでは、ビットコード対応アプリからのクラッシュのシンボル化はまだ完全にはサポートされていません。 それまでは、 ビットコードを無効にすることをお勧めします。 ビットコードを無効にすると、シンボル管理が大幅に簡素化され、現在、iOS アプリの既知の欠点はありません。
アプリのビットコードを無効にする
- Xcode で、プロジェクト ナビゲーターの最上位要素をクリックしてプロジェクト設定を開きます。
- [ビルド設定] ページに移動する
-
bitcode
を検索します - 結果で、値を [はい] から [いいえ] に変更します。
- アプリをリビルドする
これらの簡単な手順では、App Center のクラッシュ レポートは通常どおりに動作します。
ビットコードが有効なアプリのシンボルを取得する
ビットコードを有効のままにする場合は、次の手順に従って適切な dSYM ファイルをダウンロードできます。
- Xcode のオーガナイザーを開く
- iTunes Connect にアップロードしたアプリの特定のアーカイブを選択します
- [dSYMs のダウンロード] ボタンをクリックします。 この手順では、Bitcode コンパイル済みの dSYM ファイルを元のアーカイブに挿入します。
- App Center で対応するアプリとバージョンにシンボルをアップロードする
Xcode オーガナイザーが新しいシンボルを提供しない場合は、次の手順に従って iTunes Connect ポータルから dSYM ファイルをダウンロードする必要があります。
- iTunes Connect ポータルでアプリを選択する
- 上部の [アクティビティ] タブを選択する
- シンボルが見つからないアプリのビルド バージョンを選択する
- [dSYM のダウンロード] リンクをクリックします
- ダウンロードしたファイルを App Center にアップロードします。 このファイルには、クラッシュをシンボル化するために App Center に必要なシンボルが含まれています。
シンボルの問題のトラブルシューティング
シンボルをアップロードし、ビットコードを無効化した後でもクラッシュが非シンボリック化されたまま表示される場合は、アップロードされたdSYMファイルがApp Centerが必要とするものと一致していない可能性があります。 dSYM ファイルをアップロードすると、App Center は UUID に基づいて対応するアプリのバージョンに対応付けられます。
dSYM ファイルに適切な UUID があるかどうかを再確認するには、 dwarfdump という CLI ツールを使用します。
- dSYM ファイルで UUID を見つけます。
dwarfdump --u CrashProbeiOS.app.dSYM
- 結果は次のようになります。
UUID:ADF53C85-4638-3EFF-A33C-42C13A18E915 (armv7)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
UUID:D449E33D-7E74-379D-8B79-15EE104ED1DF (arm64)CrashProbeiOS.app.dSYM/Contents/Resources/DWARF/CrashProbeiOS
- 返された UUID がデバッグ シンボル ダイアログに表示されている UUID と一致するかどうかを再確認します。
シンボルの無視
クラッシュ レポートを完全にシンボル化するためのシンボル ファイルがすべて App Center に含まれていない場合、クラッシュは [ Unsymbolicated ] タブに一覧表示されます。必要なシンボルにアクセスできる場合は、このページからアップロードされます。
シンボルをアップロードできない場合は、テーブル内の行を選択して [バージョンを無視] ボタンをクリックすることで、シンボルを無視としてマークできます。 このボタンは、クラッシュを処理し、ファイル上のシンボルを使用して可能な限り完全にシンボル化するように App Center に指示します。 処理が完了すると、部分的にシンボル化された [ クラッシュ ] タブに表示されます。 無視済みとしてマークされた同じシンボル ID に依存する新しいクラッシュは、Unsymbolicated タブを通過し、システム内で処理されます。