我有一个来自我的 Mac App Store 应用程序的堆栈跟踪,我想阅读它以帮助诊断用户遇到的问题。我有 dSYM 文件和原始存档构建,但我没有完整的崩溃报告。我只想知道堆栈跟踪中方法的名称(您可以在下面看到其中两个用于MyAppName)。我无法获得lldb
或atos
向我提供这些信息。这是堆栈跟踪的样子:
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
文档,看起来我应该像这样调用它:
xcrun atos -arch x86_64 -o MyAppName.app/Contents/MacOS/MyAppName -l <LOADED ADDRESS> 0x0000000108e91c6b
但是,我将使用什么作为加载的地址?我所拥有的只是我在上面粘贴的内容。无论我使用0x0000000000000001
,0x00007fff87df35fd
还是完全省略-l
,我都会将0x0000000108e91c6b
(我指定的地址)打印回标准输出。