iOS appdSYM のクラッシュをファイルを用いて分析する

iOS app のクラッシュに関する詳細は、 Instana で確認できます。 詳細には、モバイル・アプリケーションのすべてのアクティブ・スレッドのスタック・トレースが含まれます。 これらのスタック・トレースには、メモリー・アドレスとロー関数名が含まれます。 Instana を使用すると、スタックトレースを分かりやすい情報に変換できます。

データをコンパイルするには、 Instana には、 iOS app からのデバッグシンボル( dSYM )ファイルが必要です。 dSYM ファイルは、シンボルに使用されます。 Symbolication は、アクティブ・メモリー・アドレスを人間が読める形式に変換するプロセスです。

スタックトレースを翻訳するには、ファイルを dSYM Instana にアップロードしてください。 Web REST API を呼び出すことで、ファイルを dSYM アップロードできます。 ファイル dSYM のアップロードが完了すると、 Instana のUIにクラッシュに関する詳細情報が表示されます。 詳細を表示するには、 「異常終了」 タブで 「異常終了スレッド」 をクリックします。 詳しくは、 異常終了を参照してください。

注:Instana は、事後的なクラッシュの翻訳に対応していません。 Instana ソースマップが正しくアップロードされ、コミットされた後に発生したクラッシュのみを翻訳します。

ファイルの dSYM アップロード

ファイルを dSYM アップロードする前に、以下の前提条件が満たされていることを確認してください:

  • API トークンが作成され、モバイルアプリの監視用に設定権限が有効化されます。 詳細については、 「 API トークン」 を参照してください。
  • ソースマップは、セルフホスト型カスタムエディション( Kubernetes または Red Hat OpenShift Container Platform ) 用に保存されます。 詳細については、 「外部ストレージの設定」 を参照してください。
  • アップロードするファイル dSYM が、現在のアプリバージョンと一致していることを確認してください。 たとえば、アプリを更新するたびに、更新された dSYM ファイルをアップロードする必要があります。
注: アプリのビルドを行うたびに、アプリのバージョンが変更されなくても、一意の dSYM ファイルが生成されます。 クラッシュレポートのシンボリック化を正しく行うには、そのビルドで生成された dSYM ファイルを、 Instana アプリケーションに正確にアップロードする必要があります。

InstanadSYM にファイルをアップロードするには、以下の手順に従ってください:

  1. Instana のUIで、ファイルを dSYM アップロードするための設定を作成します:

    1. Go 「 ウェブサイトとモバイルアプリ」 > 「モバイルアプリ」 へ。

    2. モバイル・アプリをクリックします。 モバイル・アプリケーション・ダッシュボードが表示されます。

    3. 「構成」 > 「スタック・トレース変換」をクリックします。

      図 1. シンボルファイルのアップロード設定画面
      シンボル・ファイル・アップロード構成ビューを示すスクリーン・ショット
    4. 「構成の追加」をクリックします。 「新規シンボル・ファイル・アップロード構成」ダイアログが表示されます。

    5. 「説明」 フィールドに、アップロードの説明を入力します。

    6. 「作成」 をクリックします。 「シンボル・ファイル・アップロード構成の編集」ダイアログが表示されます。 ダイアログに表示される Web REST API を使用して、 dSYM ファイルをアップロードします。 ステップ 3 を参照してください。

    7. 保存 をクリックします。 構成が保存されます。

    注: モバイルアプリ1つにつき、最大1,024件のソースマップ設定をアップロードできます。 モバイルアプリ1つあたりのソースマップ設定の最大保存容量は2,048 MBです。 この制限を引き上げるには、 Instana のサポートまでお問い合わせください。
  2. dSYM ファイルを .tgz ファイルに圧縮します。

       tar czf <archive name>.tgz <files or locations>
     

    コマンドの例を以下のスニペットに示します。

       tar czf your_app.dSYM.tgz your_app.dSYM_folder
     
  3. 圧縮ファイルのサイズが 10 MB を超える場合は、 .tgz ファイルを複数の BLOB (それぞれ 9 MB) に分割します。

       split -b 9m <archive name>.tgz <file>.tgz_blob_
     

    コマンドの例を以下のスニペットに示します。

       split -b 9m your_dSYM_file.tgz your_dSYM_file.tgz_blob_
     
  4. Instana のウェブサイト( REST API )を使用して、ファイルをアップロードしてください。 以下のステップのいずれかを実行します。

    • アップロードに複数の BLOB が含まれている場合は、以下を実行します。

          curl -L -X PUT \
               'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \
               -H 'authorization: apiToken $API_TOKEN' \
               -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \
               -F 'fileType="dSYM"' \
               -F 'blobIndex=1' \
               -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'
       
      注:blobIndex の値は0ではなく1から始まります。 次の各ブロブについて、 blobIndex を1ずつ増やします。
    • アップロードに含まれているファイルが 1 つのみの場合は、以下を実行します。

          curl -L -X PUT \
               'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \
               -H 'authorization: apiToken $API_TOKEN' \
               -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \
               -F 'fileType="dSYM"' \
               -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'
       

      圧縮ファイルのサイズが 10 MB を超えると、エラー・メッセージ request entity too large が表示されます。 ステップ 3 を参照してください。

  5. コミット・アップロード:

          curl -L -X PUT \
               'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/commit' \
               -H 'authorization: apiToken $API_TOKEN' \
               -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \
               -F 'fileType="dSYM"'
     

コミットコマンドを実行する前に、すべてのBlobをアップロードしてください。 Instana のUIでは、各ソースマップごとにアップロードされたBlobの数を確認できます。 ブロビングを使用しないソースマップの場合、ブロブ数は「1」と表示されます。

注: ソースマップのサイズが大きい場合、コミットの完了までに時間がかかることがあります。 コミットが成功すると、ソースマップのコミットステータスに が表示されます Success

Instana からファイルを dSYM 削除する

Instana からファイルを dSYM 削除するには、次のいずれかの手順を実行してください:

  • Go 「Webサイトとモバイルアプリ 」>「 モバイルアプリ 」>「 設定 」> 「スタックトレースの変換 」に移動し、該当する設定の横にある削除アイコンをクリックします。

  • Web REST API を呼び出します。 コマンドの例を以下に示します。

       curl -L -X PUT \
          'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/clear' \
            -H 'authorization: apiToken $API_TOKEN'