私のアプリは、Objective C と C++ の両方で書かれています。私は xcode 4.5 を使用しており、もちろん開発者アカウントを持っています。デバイスは脱獄されておらず、開発者アカウントですべてをセットアップしました。私は xcode の「デバイス ログ」を使用しません。代わりに、シグナル/例外ハンドラーを実装してスタック トレースをファイルに書き込み、次にアプリを起動したときにそれを Web サーバーに送信します。
クラッシュ時にスタック トレースを取得するには、[NSException callStackSymbols] を使用します。できます。したがって、次のようなサンプル クラッシュを実行すると、次のようになります。
NSArray *arr=[NSArray array];
[arr objectAtIndex:100];
xcodeでデバッグし、デバイスのxcodeアプリからインストールして起動すると、次のようになります:
0 CoreFoundation 0x36c738a7 __exceptionPreprocess + 186
1 libobjc.A.dylib 0x3308a259 objc_exception_throw + 32
2 CoreFoundation 0x36bcb23d -[__NSArrayI objectAtIndex:] + 164
3 MyApp 0x001be505 _ZN8Menu6handleEN12GestureE + 912
4 MyApp 0x000e6ce1 _ZN13BaseLevel10handleBaseEN12GestureE + 440
5 MyApp 0x0011b747 _ZN12Manager6handleEN12GestureE + 742
6 MyApp 0x00102731 _ZN13Processor9doProcessEd + 552
7 GLKit 0x3723a0c5 -[GLKViewController _updateAndDraw] + 272
8 CoreFoundation 0x36bd27d3 -[NSObject performSelector:] + 38
9 QuartzCore 0x3233486f _ZN2CA7Display11DisplayLink8dispatchEyy + 166
10 QuartzCore 0x323347c5 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 60
MyApp の c++ および objc のクラスとメソッドは正常にシンボリック化されています。
しかし、AdHoc ipa を作成し、その中で同じクラッシュを実行すると、次のようになります。
0 CoreFoundation 0x36c738a7 __exceptionPreprocess + 186
1 libobjc.A.dylib 0x3308a259 objc_exception_throw + 32
2 CoreFoundation 0x36bcb23d -[__NSArrayI objectAtIndex:] + 164
3 MyApp 0x001be505 _mh_execute_header + 894213
4 MyApp 0x000e6ce1 _mh_execute_header + 11489
5 MyApp 0x0011b747 _mh_execute_header + 227143
6 MyApp 0x00102731 _mh_execute_header + 124721
7 GLKit 0x3723a0c5 -[GLKViewController _updateAndDraw] + 272
8 CoreFoundation 0x36bd27d3 -[NSObject performSelector:] + 38
9 QuartzCore 0x3233486f _ZN2CA7Display11DisplayLink8dispatchEyy + 166
10 QuartzCore 0x323347c5 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 60]
つまり、クラスとメソッドの名前がなくなり、シンボル _mh_execute_header+<offset> に置き換えられました。
dSYM 設定を見逃していると思っていましたが、リリースとデバッグの両方でオンになっており、「デバッグ シンボルの削除」もオフになっています。
SOで検索しましたが、運がありません。何が悪いのか教えてください。