如何在Cocoa应用程序中打印可用的堆栈跟踪?

时间:2016-03-02 16:06:42

标签: objective-c macos cocoa stack-trace

当我的应用遇到[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调用。

0 个答案:

没有答案