web-dev-qa-db-ja.com

AtosはアーカイブされたアプリケーションのdSYMからシンボルを取得できません

BugSense からのクラッシュレポートがあるので、クラッシュのメモリ位置に関する情報がありますが、それらはシンボリックではありません。また、Bug Senseは従来のクラッシュレポートを送信しませんが、バグトレースを提供します。だから私は私のクラッシュの正確な場所を取得するためにアトスを使用しようとしています。 XCode 4でアプリをアーカイブし、そのバージョンを使用してアプリストアに送信したので、dSYMファイルを作成しました。次のコードを実行しました。

atos -Arch armv7 -o MyApp.app.dSYM 0x001057e9

ただし、適切な出力を取得する代わりに、エラーが発生します。

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7

なぜこれが起こっているのかについての提案はありますか?アプリからデバッグシンボルを削除していません。

34
Jason

アーカイブされたアプリのdSYMファイルからシンボルを適切に取得し、BugSenseクラッシュレポート(またはその問題に関する他のクラッシュレポート)から有用な情報を取得するには:

  1. スタックトレースをBugSenseからTextEditまたはその他のテキストエディターにコピーします。単にテキストをコピーするのではなく、必ず「クリップボード」アイコンを使用してください。そうしないと、スタックトレースの実際のメモリ位置を取得できません。これは、atosを使用して参照を検索し、スタックトレースをシンボル化するために必要です。
  2. XCodeを開き、オーガナイザーに移動します
  3. アーカイブを見つけて右クリックし、Finderで開きます。
  4. アーカイブのディレクトリに移動します。通常は~/Library/Developer/XCode/Archives/YYYY-MM-DD/です。
  5. 特定のアーカイブに移動し、次にdSYMsフォルダに移動します
  6. ファイルMyApp.app.dSYMが表示され、atosを実行する必要があるファイルだと思うかもしれません。これは誤りです。 実際には別のパッケージです!cdこのパッケージのフォルダー:MyApp.app.dSYM/Contents/Resources/DWARFに入れると、MyAppと呼ばれる別のファイルが見つかります。これは実際のdSYMファイルです。
  7. atos -Arch armv7 -o MyApp 0x0000000(またはメモリアドレスが何であれ)を実行してエラーの場所を見つけるか、単にatos -Arch armv7 -o MyAppを実行してインタラクティブモードに入ります。
98
Jason

正しい住所を取得する必要があります。上記のソリューションを使用できますが、正しいメモリアドレスを取得するには、16進数の計算を使用する必要があります。スライド+スタックアドレス-ロードアドレス。

3
Greg Hawk