Xcode完整堆栈跟踪

Xcode完整堆栈跟踪,xcode,stack-trace,Xcode,Stack Trace,在调试过程中,仍然可以看到完整的堆栈跟踪,主线程中调用的方法列表。或者以任何方式在命令窗口中打印它们。您可以通过 NSLog(@"Stack trace : %@",[NSThread callStackSymbols]); 崩溃时,您可以在单词(lldb)旁边键入: po [NSThread callStackSymbols] 编辑: 为了在Swift的控制台上获得更好的输出,您可以使用以下行: Thread.callStackSymbols.forEach{print($0)} 您可以

在调试过程中,仍然可以看到完整的堆栈跟踪,主线程中调用的方法列表。或者以任何方式在命令窗口中打印它们。

您可以通过

NSLog(@"Stack trace : %@",[NSThread callStackSymbols]);
崩溃时,您可以在单词
(lldb)
旁边键入:

po [NSThread callStackSymbols]
编辑:

为了在Swift的控制台上获得更好的输出,您可以使用以下行:

Thread.callStackSymbols.forEach{print($0)}

您可以在引发异常之前添加断点。首先转到断点导航器(cmd+6)。在左下角单击鼠标加号按钮。或 您可以使用
Instruments
(/Developer/Applications/Instruments)来帮助检测
僵尸对象的使用情况。

当您添加断点查看时,图片将通过
Xcode
创建

您可以使用底部的滑块展开堆栈跟踪。对于逐行日志,请使用
单步执行
单步执行


谢谢,希望这能帮助您

在Xcode 5中,您可以移动显示堆栈跟踪的窗格底部的滑块。它控制显示多少被敲击的轨迹


在Xcode 6中,您可以单击窗格左下角的按钮,该按钮显示完整的堆栈跟踪。
在(lldb)中使用
bt
命令

暂停或崩溃后,只需在调试控制台中键入
bt

它将打印完整的堆栈跟踪


以编程方式,您可以使用Mihir描述的callStackSymbols。当然,您也可以在Xcode中的断点处停止(或只按“暂停”)并检查左侧列中的堆栈。(总是启用一个异常断点。)(+1是为了认识到检查堆栈是很重要的。很少有人开始使用Xcode来理解这一点。)我也在做同样的事情,但在堆栈跟踪中,我只能看到5或6个方法调用,然后在25个UIApplicationMain和26个main上看到。我看不出6到25之间的方法。我想查看完整的堆栈跟踪。我是通过nslog获得的。感谢guyswithin lldb,它可以打印为:po[NSThread callStackSymbols]更新了answerpo线程。callStackSymbols返回
无法在类型上使用点运算符
如何在Xcode 6中执行此操作?不再有滑块。此滑块似乎已在XCode6中删除。。。如果有人知道如何在XCode6下做到这一点,你就是我的英雄。@Steazy请参阅龚鹏军对XCode6-11(或更高版本,11.x目前是最新版本)的回答。设置符号断点后跟踪约束问题的绝妙提示。你也可以提及线程id(从调试窗格中)用于捕获特定线程的堆栈。例如,在线程42的情况下,您应该耐心等待--“bt 42”,因为它需要大约30秒的时间才能打印出来。这个答案在Xcode 11中仍然是最新的,但按钮已经稍微移动了一点