2010-12-21 6 views
0

ここでは、iPadの開発と対話の初心者です。私はここでデバイスのログを読むという問題に直面しています。私がログを閲覧したとき、人々は私がビルドしてアーカイブし、そのビルドをデバイスに使用していると言った。次にデバイスをマシンに接続したときに、デバイスログがクラッシュログを自動的に表します。しかし、そうではありません。iPadアプリのクラッシュレポートを象徴する

私は現在次のステップを行っています。

  1. xcode設定デバイスを配置してリリースします。
  2. ビルド - >ビルドとアーカイブ。
  3. Buildフォルダに移動し、Itunesアイコン上にバイナリファイルをドラッグアンドドロップして置き換えを選択します。
  4. テストの後、ipadを再接続し、オーガナイザウィンドウに移動し、デバイスを選択し、デバイスログをクリックします。
  5. これはシンボルだけを示しています。クラッシュする場所の手掛かりはありません。

例:クラッシュレポート

Thread 0 Crashed: 
0 libSystem.B.dylib    0x30d7c2d4 __kill + 8 
1 libSystem.B.dylib    0x30d7c2c4 kill + 4 
2 libSystem.B.dylib    0x30d7c2b6 raise + 10 
3 libSystem.B.dylib    0x30d90d72 abort + 50 
4 libSystem.B.dylib    0x30d7e980 __assert_rtn + 152 
5 libgcc_s.1.dylib    0x307e8b4e _Unwind_SjLj_Resume + 26 
6 CoreFoundation     0x35801d50 CFRunLoopRunSpecific + 432 
7 CoreFoundation     0x35801b88 CFRunLoopRunInMode + 52 
8 GraphicsServices    0x320c84a4 GSEventRunModal + 108 
9 GraphicsServices    0x320c8550 GSEventRun + 56 
10 UIKit       0x341dc322 -[UIApplication _run] + 406 
11 UIKit       0x341d9e8c UIApplicationMain + 664 
12 My EF       0x00002c84 main (main.m:14) 
13 My EF       0x00002c4c start + 32 

私が何か間違ったことをやっている場合は私に知らせてください。

おかげ スレシュ

答えて

0

EDIT

それはあなたのコードをsymbolicatingされる - あなたはすべてを正しくやっています。スタックトレースがmain.mの14行目にあることを示すmain.m:14と言っているからです。

これはあなたのコードではないためです。appleのライブラリあなたのためにコンパイルされています - あなたはあなたのアプリにそれらをリンクしています。あなたはコードを持っていないので、クラッシュした行をあなたに伝えることはできません!

これは、クラッシュがアップルのコードのどこかで深刻に発生したことを示しています。これは良いニュースではありません。 XCodeで実行している間にこのクラッシュが発生するようにする必要がありますので、何が起こっているのかを正確に見ることができます。

リンク先のフレームワークのリストにlibgcc_sを追加しましたか?


これはちょっと難しいことです。

私は、同じコードをビルドするだけでなく、アプリにインストールされたものとまったく同じビルドでなければならないということでした。再構築は十分ではありません。

これを解決するために、バージョンコントロール(特にgit)を使用します。私がテストする人々にアプリのバージョンを提供するたびに、ビルドフォルダをリリース/ディレクトリにコピーします。その後タグ付けします(release_2010_12_10_showcaseなど)。クラッシュして戻ってきた場合は、アプリに渡して正しいバージョンのビルドをチェックアウトしてもらえます。これは、アプリケーションのビルドからシンボルを持っていることを意味し、XCodeのコードは実行しているコードとまったく同じですので、クラッシュが発生した場所を確認して修正できます:)次に、gitの魔法を使って、私の変更を私の最新のコードにマージしてください:)

NS私はまだアーカイブアプリケーションを使用していません。あなたが正しいことをしているように聞こえますが、アップルだけが理解できる何らかの魔法があると思います。私のバージョン管理のすべてが好きで、私はそれに慣れてXcodeのアーカイブについて十分に知りません。それはおそらく私はちょうど彼らがどのように動作するかを学ぶ必要があることを意味します!

+0

HIディーン 感謝。わかった。それは象徴的です。 とlibgcc_sとは何ですか?あなたはそれが何をしているのか、どのように役立つのか教えてください。 ありがとう suresh – sbmandav

+0

私はlibgcc_sが何であるか分かりません。あなたのアプリに何か欲しいと思われるようです。それをフレームワークとして追加するには、プロジェクトのフレームワークグループを右クリックし、「追加」 - >「既存のフレームワーク」を選択します。そのリストにlibgcc_s.1.dylibがあるはずです。それを選択して、アプリケーションがクラッシュせずに実行されるかどうかを確認します。 – deanWombourne

+0

上記のスタックトレースをどのようにコードに関連付けるのですか?私はgitでタグ付けされたコードを持っていますが、関連する行番号を取得する方法を正確にはわかりません(特に、私のアプリのmain.m以外は何も実行していないように思えます。 elseはapple/gnuフレームワークでコンパイルされます) – smtlaissezfaire

1

私もこれを見ています。

私の最高の推測では、例外がスローされ、フレーム#5または#6で捕捉されたということです。その後、元のスタックトレースを再構築しようとしたときに何かがひどく間違っていて、abort()が呼び出されました。

この場合、実際のスタックトレースは失われています。実際のスタックトレースを確認するには、おそらくデバッガで問題を再現する必要があります。クラッシュレポートを分析する

0

ステップ:

1.CopyのAppStoreにプッシュされたリリースの.appファイル、リリース時に作成された.dSYMファイルとクラッシュレポートをへAPPLEから受け取りますフォルダ。

2.OPEN端末アプリケーションで、上記で作成したフォルダ(CDコマンドを使用)に移動します。

3.atos -arch armv7 -o ''/'< .dSYM filename here>'となります。メモリの場所は、レポートごとにアプリがクラッシュした場所でなければなりません。

例:ATOS -archのARMv7 -o 'のアプリname.app'/'アプリケーション名' 0x0003b508

これはあなたのクラッシュが生じた正確なライン、メソッド名を表示します。

例:[classname functionName:]; -510

おかげでお返事のための

関連する問題