用dtos来确定崩溃的方法名称 [英] Using atos to determine crashed method name with dSYM

查看:168
本文介绍了用dtos来确定崩溃的方法名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个来自用户的控制台堆栈(不是崩溃报告),我正在尝试确定我的应用程序中的哪个方法调用是最后一个人。

I have a Console stack (not a crash report) from a user, and I'm trying to determine which method call in my application was the last man standing.

我知道他们正在使用哪个版本的应用程序,并且我有一个该版本/调试版本的副本以及存档副本的dSYM文件。

I know which version of the application they were using, and I have a copy of that release/debug build, along with the dSYM file for the archived copy.

但是,当我尝试使用 atos 来吐出内存地址时,似乎没有帮助。 (我从下面的堆栈中使用 0x000000010e703bc0 。)

But, when I try to use atos to spit out the memory address, it doesn't seem to help. (I'm using 0x000000010e703bc0 from the stack below.)

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)

我需要输入某种偏移吗?或者某种内存地址数学来确定程序内存块中的实际位置,根据用户提供给我的地址?

Do I need to enter an offset of some sort? Or some kind of memory address math to determine the actual location inside my program's memory block, based on the address provided to me by the user?

这是全部的我收到的堆栈跟踪:

This is the totality of the stack trace I received:

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


推荐答案

一个加载地址。你尝试过:

it's expecting a load address. have you tried:

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

我从你的例子中获取0x000000010E6FE000,从0x000000010e6ffab4减去6836(base10)...或你可以使用MyApp中显示的任何其他数学项目。

i get 0x000000010E6FE000 from your example by subtracting 6836 (base10) from 0x000000010e6ffab4 ... or you could use any of the other math items shown there for MyApp .

这里是我最近的一个崩溃中的一个例子,其中0x2d000从崩溃日志中显而易见。第一行是我在命令行中输入的。之后的每一行都是程序输出(人为缩进我的输入$或$> ...屏幕上没有这样的提示)。

here's an example from one of my recent crashes, where the 0x2d000 was evident from the crash log. first line is what i entered on the command line. every other line after that is program output (artificially indenting my input with $ or $> ... there is no such prompt on the screen).

$ 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

这篇关于用dtos来确定崩溃的方法名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆