有时(意味着经常)当我尝试从 iPad 应用程序调试崩溃时,LLDB 决定不要太有帮助,并且变量(堆栈或类成员)的打印无法正常工作。
如果我右键单击(或 CTRL+单击)左侧调试窗口中的变量,然后“打印描述”,我会收到如下错误消息:
Printing description of error:
(NSURLError *) error = <register sp is not available>
或者
Printing description of error:
(NSURLError *) error = <register ebp is not available>
如果我自己尝试使用调试控制台,我会得到如下信息:
(lldb) po error
(NSError *) $3 = 0x2124fc10 [no Objective-C description available]
之后右键单击似乎开始工作并产生以下结果:
Printing description of error:
(NSURLError *) error = 0x2124fc10
但我得到的只是内存地址,它似乎无法调用description
它。如果我尝试发送description
消息,则会发生这种情况:
(lldb) po [error description]
error: Execution was interrupted.
The process has been returned to the state before execution.
所以这也没有帮助。可以做些什么来使调试器再次可用?我迫切地不得不赶上崩溃,但每次我可以引发它时,都会发生上述情况,我不知道如何找到错误的核心。
我用谷歌搜索“注册不可用的 lldb”,但什么也没找到,只有一些 pastebin 日志,没有答案。
仅供参考:使用 Xcode 4.5.2,iOS SDK 6.0,编译“Debug”-Profile,没有打开优化,LLDB 调试器,iOS 部署目标 5.0,发生在模拟器或设备(iPad 1 和 3,iPhone 4S,iPhone 3GS),被调试的App相当广泛地使用GCD。