7

Apple から受け取ったクラッシュ ログをシンボル化する方法を見つけるためにインターネット全体を検索した後、最終的にターミナルで atos コマンドを使用してクラッシュ ログをシンボル化する方法を見つけました。dSYM ファイル、.app ファイル、およびクラッシュ ログを同じフォルダーにatos -arch armv7 -o APPNAME格納しており、これを使用してメモリ アドレスを入力することができました。また、メソッド名が表示されることもありました (非常にまれですが)。正直なところ、端末やクラッシュ ログの経験はあまりありません。Xcode のオーガナイザーからのクラッシュ ログをシンボリック化しようとしても、残念ながら何も実行されませんsymbolicatecrashでした。また、Xcode のパッケージ コンテンツ内でファイルを使用しようとしても失敗しました。だからここに私は、私が知っている唯一の他のオプションが残っています。

さて、私の質問は次のとおりです。これらのメモリアドレスの先頭または末尾を作成するにはどうすればよいですか? アプリがクラッシュしたポイントに到達するには、どのアドレスを入力する必要がありますか? 私はそこまでの道のりの 90% に達していますが、どのアドレスが有益な情報を提供してくれるのか、どれが役に立たないのかわかりません。ここに添付されているのは、クラッシュ ログの写真です。

ここに画像の説明を入力

どんな助けでも大歓迎です。

4

2 に答える 2

12

私の推測では、(私が行ったように)atos情報を含むStackoverflowの質問を見ましたが、atosに入れるためのアドレスを正しく計算していません。ここを参照してください:

iOSクラッシュレポート:atosが期待どおりに機能しない

シンボルアドレス=スライド+スタックアドレス-ロードアドレス

otoolを使用して、スライドアドレス(通常は0x001000)を取得します

otool -arch ARCHITECTURE -l "APP_BUNDLE/APP_EXECUTABLE" | grep -B 3 -A 8 -m 2 "__TEXT"

クラッシュログの一番下までスクロールして、バイナリイメージセクションからスタックアドレスを取得します(バイナリイメージの下のリストの最初のアドレス)。

次に、Macに付属のHEX計算機を使用して合計します(プログラマービューを使用)。最後に、クラッシュログのスタックトレースからロードアドレスを減算します(この場合は0x00012efeのようになります)。

これをatosに入れて、クラッシュの原因となる行を取得します。

atos -arch armv7 -o YOURAPP.app'/'yourapp' 0xADDRESSFROMABOVE
于 2013-01-08T19:26:28.050 に答える