2011-01-12 8 views
0

私のiPhoneアプリを使用している顧客からクラッシュログを取得しました。象徴的な情報を取得しようとしていて、壮観ではありません...私は、 :iPhoneのクラッシュログを分析する

symbolicatecrashクラッシュログfile.crashシンボルfile.dSYM>レポートで-symbols.crash

  • クラッシュログfile.crashはiTunes経由、ユーザによって得られたクラッシュログで、テキストファイル
  • symbol-file.dSYMは、アプリケーションをビルドするたびにXCodeによって作成され、シンボルファイル(一連のFフォルダ)残念ながら私の試みはすべて失敗した

: - symbolicatecrashのバージョンでは、私は(覚えていませんしているところ&私は)それを見つけたとき、出力はシンボル せずに、入力ファイルと同じです - 私のディスクで見つけた別のバージョンでは、このエラーメッセージが表示されます(注:.dSYMツリー内のシンボルファイル自体を指し示そうとしましたが、まだ助けがありません)。

/Developer/Platforms/iPhoneOS.platform /Developer/Library/PrivateFrameworks/DTDviceKit.framework/Versions/A/Resources/symbolicatecrash failedstart.crash ScanBizCards.app.dSYM/Contents/Resources/DWARF/ScanBizCards> crashwithsymbols

otool( - > '\/Developer \/Platforms \ /iPhoneOS.platform \/Developer \/usr \/bin \/otool -arch armv7 -l/Users/patrickq/Projects)の出力を理解できません。 /icr/OCR/newOCR/build/Debug-iphonesimulator/ScanBizCards.app/ScanBizCards ')/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash行301を参照してください。

ヘルプ誰ですか?

私もシンボルの数学自分自身をやって気にしませんが、シンボルファイルを開く方法がわからない...

パトリック

+0

私はオーガナイザにクラッシュログをドラッグしました....「XYを象徴する」というメッセージが表示されますが、結果を見ることはできません...どこにそれを見つけるか教えてください。私は盲目です... – Icky

答えて

0

あなたのiPhoneシミュレータデバッグ用symbolicatecrashを実行しているようですシンボルのパスをiPhoneデバイスビルド用のシンボルに渡す必要があります

0

Xcodeの "ビルドアンドアーカイブ"機能を使用してアプリを(Apple Storeまたはユーザーに)配布する場合は、クラッシュログ主催者に通知し、IDEに象徴化をさせます。

は、に正確なバージョンのアプリと.DSYMが必要です。アプリケーションを再コンパイルすると、異なる.DSYMが生成され、動作しません。

+0

素晴らしい、魅力のように動作します - ありがとう – patrickq

6

symbolicatecrashは非常にバグがあり、スポットライト(mdfind)を使用してバイナリ/ dsymファイルを見つけるためにスマートなことをしようとします。どうやら、それは(シミュレータ用)あなたの開発効率向上のビルド製品のいずれかを発見し、デバイス上で発生したcrashreportをsymbolicateしようとするためにそれを使用

Can't understand the output from otool 
(-> '\/Developer\/Platforms\/iPhoneOS.platform\/Developer\/usr\/bin\/otool 
-arch armv7 -l 
/.../build/Debug-iphonesimulator/ScanBizCards.app/ScanBizCards') 

:この行は手がかりです。そして、それは悲惨に失敗しました。

私たちの会社の2人の異なる人に全く同じ問題が発生しました。私は問題がどのように起こったのか調査していない。私はこれが非常にまれであると思います。そうでなければ、このような巨大なバグはすでに修正されていました。今のところ、私はこの非常に粗製の回避策を持っている:

  • シミュレータ(私が意味する、すべてのインカネーションのからアプリケーションを削除し、この実行ファイルの名前を言及するすべてのあなたのbuildフォルダ(あなたのケースScanBizCards.app中)
  • を削除します~/Library/Application Support/iPhone Simulator/4.3~/Library/Application Support/iPhone Simulator/3.2、...のようなさまざまなバージョンのシミュレータでのアプリケーション

これにより、アーカイブされたアプリケーションのみが残ります。今回は、symbolicatecrashが間違ったバージョンを見つけられず、最終的に正しいバージョンを見つけることができません。

問題を再現した場合、この恐ろしいperlスクリプトをデバッグするのに時間がかかるでしょう。

私は役立つことを願っています。

+0

ありがとう!シミュレータのビルドディレクトリを削除し、シミュレータをリセットすることは私にとっては魅力的だった。 – csch

+0

FYI、あなたが提案した 'symboliccrash'バグ修正を実装した回答を追加しました。 – darvids0n

1

フレデリック氏と同じ問題が指摘されています。 mdfind後にこのパラメータを追加します

my $cmd = "mdfind \"com_apple_xcode_dsym_uuids == $myuuid\""; 

-onlyin /path/to/your/app/bundles 

、あなたを格納しているディレクトリを使用し、より完全に、symbolicatecrashスクリプトでsub getSymbolPathFor_dsymUuidの検索を問題を修正し、次の行を変更するにはアーカイブされたバンドル。こうすることで、アプリの正しいバージョンが常に見つかるようになります。あなたは余分安全になりたい場合は、それが言うところに少しスクロールダウン:

my @spotLightSearchForExecutable = `mdfind $executable.app'; # To cover the case where the DSYM's and .app are no located in the same location. 

を、同様-onlyin /path/to/your/app/bundlesを追加します。このパスは、上記の行のコメントとして、symbolicatecrashがあなたの.DSYMと同じフォルダに.appを見つけることができない場合にのみ使用されます。うまくいけば、両方を同じフォルダに保存すれば、これは決して動かすべきではありませんが、疑問があれば、安全でこれを行う方が良いでしょう。

関連する問題