我从我的Mac App Store应用程序中获取堆栈跟踪信息,我想阅读该信息以帮助诊断用户遇到的问题。我有dSYM文件和原始的存档版本,但是我没有完整的崩溃报告。我想知道的是堆栈跟踪中方法的名称(您可以在下面看到其中的两个为MyAppName)。我一直无法获得lldb
或atos
给我这个信息。这是堆栈跟踪的样子:从Mac应用程序的调用堆栈获取符号名称
0 CoreFoundation 0x00007fff92fdd25c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff918dbe75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff92ebb4f5 -[__NSArrayM objectAtIndex:] + 245
3 MyAppName 0x0000000108e91c6b MyAppName + 126059
4 MyAppName 0x0000000108e7556f MyAppName + 9583
5 AppKit 0x00007fff8d883099 -[NSToolbarButton sendAction:to:] + 75
6 AppKit 0x00007fff8d8830e8 -[NSToolbarButton sendAction] + 65
7 AppKit 0x00007fff8d436f0c -[NSToolbarItemViewer mouseDown:] + 4897
8 AppKit 0x00007fff8d352a58 -[NSWindow sendEvent:] + 11296
9 AppKit 0x00007fff8d2f15d4 -[NSApplication sendEvent:] + 2021
10 AppKit 0x00007fff8d1419f9 -[NSApplication run] + 646
11 AppKit 0x00007fff8d12c783 NSApplicationMain + 940
12 libdyld.dylib 0x00007fff87df35fd start + 1
13 ??? 0x0000000000000001 0x0 + 1
要得到一个符号(比如说上面的级别3),我可以使用什么命令?当我打电话lldb
,它甚至不是清楚,如果我应该使用十六进制地址或偏移,如果是这样的126059是3级
更新
按照atos
documentation什么,它看起来像我应该这样调用它:
xcrun atos -arch x86_64 -o MyAppName.app/Contents/MacOS/MyAppName -l <LOADED ADDRESS> 0x0000000108e91c6b
但是,我会用什么作为加载的地址?我所拥有的就是我上面粘贴的内容。无论我使用0x0000000000000001
,0x00007fff87df35fd
还是完全忽略-l
,我都会得到0x0000000108e91c6b
(我指定的地址)打印回标准输出。