目前在调试XCode时有问题。所有堆栈跟踪只显示最后两次调用。也不能使用lldb
控制台。例如,一个简单的unrecognized selector
错误只显示这个跟踪日志
* thread #1: tid = 0x2503, 0x32d2e960 libobjc.A.dylib`objc_exception_throw, stop reason = breakpoint 1.1
frame #0: 0x32d2e960 libobjc.A.dylib`objc_exception_throw
frame #1: 0x37c4ae06 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 170
尝试从调试器中打印[NSThread callStackSymbols]
,这有时在调试器不工作时有效。我并不感到惊讶
另外,我的经验是GDB要可靠得多。
一个简单的XCode重启解决了这个问题。但过了一段时间后,这个bug一直在发生。
通过Objective-C运行时函数展开可能很棘手,程序集是手动调整的,lldb可能很难弄清楚如何展开它们。在这种情况下,看起来它向前移动了一帧,然后不能再向前移动了。