11

ユーザーからのコンソールスタック(クラッシュレポートではない)があり、アプリケーションのどのメソッド呼び出しが最後に立っていたかを判断しようとしています。

私は彼らが使用しているアプリケーションのバージョンを知っており、アーカイブされたコピーのdSYMファイルとともに、そのリリース/デバッグビルドのコピーを持っています。

しかし、atosメモリアドレスを吐き出そうとすると、役に立たないようです。(私は0x000000010e703bc0以下のスタックから使用しています。)

craig-mbp:Desktop Craig$ atos -o MyApp.app_1.0.0.dSYM/Contents/Resources/DWARF/MyApp -arch x86_64
0x000000010e703bc0 (<- entered by me)
0x000000010e703bc0 (<- console output)

ある種のオフセットを入力する必要がありますか?または、ユーザーから提供されたアドレスに基づいて、プログラムのメモリブロック内の実際の場所を特定するための、ある種のメモリアドレス計算ですか?

これは私が受け取ったスタックトレースの全体です:

28/11/12 10:48:56.220 AM    MyApp[411]  (
    0   CoreFoundation                      0x00007fff8fee90a6 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff8e94a3f0 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff8fee8e7c +[NSException raise:format:] + 204
    3   Foundation                          0x00007fff92b1ce5c -[NSPlaceholderString initWithString:] + 93
    4   Foundation                          0x00007fff92b1cde4 +[NSString stringWithString:] + 43
    5   MyApp                               0x000000010e703bc0 MyApp + 23488
    6   MyApp                               0x000000010e70a038 MyApp + 49208
    7   MyApp                               0x000000010e70b41a MyApp + 54298
    8   MyApp                               0x000000010e70bb92 MyApp + 56210
    9   Foundation                          0x00007fff92b22db5 __NSFireDelayedPerform + 358
    10  CoreFoundation                      0x00007fff8fea5da4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    11  CoreFoundation                      0x00007fff8fea58bd __CFRunLoopDoTimer + 557
    12  CoreFoundation                      0x00007fff8fe8b099 __CFRunLoopRun + 1513
    13  CoreFoundation                      0x00007fff8fe8a6b2 CFRunLoopRunSpecific + 290
    14  HIToolbox                           0x00007fff8b31c0a4 RunCurrentEventLoopInMode + 209
    15  HIToolbox                           0x00007fff8b31be42 ReceiveNextEventCommon + 356
    16  HIToolbox                           0x00007fff8b31bcd3 BlockUntilNextEventMatchingListInMode + 62
    17  AppKit                              0x00007fff948e7613 _DPSNextEvent + 685
    18  AppKit                              0x00007fff948e6ed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
    19  AppKit                              0x00007fff948de283 -[NSApplication run] + 517
    20  AppKit                              0x00007fff94882cb6 NSApplicationMain + 869
    21  MyApp                               0x000000010e6ffab4 MyApp + 6836
4

1 に答える 1

19

ロードアドレスが必要です。やってみました:

atos -o MyApp.app_1.0.0.dSYM/Contents/Resources/DWARF/MyApp -arch x86_64 -l 0x000000010E6FE000

0x000000010e6ffab4から6836(base10)を引くことにより、例から0x000000010E6FE000を取得します...または、MyAppに表示されている他の数学項目のいずれかを使用できます。

これは私の最近のクラッシュの例です。クラッシュログから0x2d000が明らかになりました。最初の行は、コマンドラインで入力したものです。その後の1行おきにプログラム出力があります(入力を$または$>で人為的にインデントします...画面にそのようなプロンプトはありません)。

$ atos -o /x/xcode/DerivedData/Xxxx/Build/Products/Debug-iphoneos/Xxxx.app.dSYM/Contents/Resources/DWARF/Xxxx -l 0x2d000
got symbolicator for /x/xcode/DerivedData/Xxxx/Build/Products/Debug-iphoneos/Xxxx.app.dSYM/Contents/Resources/DWARF/Xxxx, base address 1000
$> 0x0002f9a6
0x000039a6 (in Xxxx)
$> 0x0002f940
0x00003940 (in Xxxx)
$> 0x000c70f6
-[TFHTTPOperation connection:didReceiveData:] (in Xxxx) + 754
于 2012-12-05T12:50:35.510 に答える