当我的应用遇到[NSThread callStackSymbols]
时,我使用NSError
来记录堆栈跟踪,以帮助我排查和调试用户看到的行为。它产生如下输出:
(
0 MyApp 0x00000001067b02fc MyApp + 451324
1 AppKit 0x00007fff89e922c2 -[NSApplication finishLaunching] + 354
2 AppKit 0x00007fff89e91e05 -[NSApplication run] + 231
3 AppKit 0x00007fff89e14520 NSApplicationMain + 1176
4 libdyld.dylib 0x00007fff9bae25ad start + 1
)
如何在同一个日志语句中打印加载MyApp
的地址,这样我就可以手动对堆栈帧进行符号化(在这种情况下,找出451324
处的方法) ?
例如,在查看崩溃报告时,会有一个标有" Binary Images"列出每个二进制文件的地址。我正在寻找一种在运行时为自己的流程获取该方法的方法。
我找到了this Apple documentation page,其中显示了如何通过炮轰atos
进行符号化,但我更喜欢Cocoa API调用。