我有一个来自用户的控制台堆栈(不是崩溃报告),我试图确定我的应用程序中的哪个方法调用是最后一个站着的人。
我知道他们使用的是哪个版本的应用程序,并且我有该发布/调试版本的副本,以及存档副本的 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
它正在等待加载地址。你有没有尝试过:
atos -o MyApp.app_1.0.0.dSYM/Contents/Resources/DWARF/MyApp -arch x86_64 -l 0x000000010E6FE000
我通过从 0x000000010e6ffab4 中减去 6836 (base10) 从你的示例中得到 0x000000010E6FE000 ...或者你可以使用 MyApp 中显示的任何其他数学项目。
这是我最近发生的一次崩溃的示例,其中 0x2d000 从崩溃日志中显而易见。第一行是我在命令行中输入的内容。之后的每一行都是程序输出(人为地用 $ 或 $> 缩进我的输入......屏幕上没有这样的提示)。
$ 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)