lldb - 如何杀死陷入无限循环的命令

时间:2013-07-01 10:49:18

标签: xcode lldb

简单的问题,但我似乎无法在网上任何地方找到答案,这真的令人沮丧。

假设我有这个错误的代码我正在尝试调试:

int myBug()
{
    while(1);
    return 0;
}

如果我用LLDB调试这个并输入print myBug()我没有得到任何结果(没有惊喜)。但是,这意味着我无法再调试,因为LLDB卡住而且不能continue。有没有办法杀死print myBug()命令?到目前为止,唯一的解决方法是放弃并重新启动所有内容 - 远非方便。

我在Xcode 4.6.1中使用LLDB,我尝试了一些按键,如Ctrl + C,Ctrl + T,但似乎没有任何工作:(

1 个答案:

答案 0 :(得分:5)

是的,从Xcode内部来看,没有一种简单的方法来中断这种表达式评估。如果您使用命令行lldb,control-C将按预期工作。您可以向流程killall -INT appname发送信号。您可以为表达式评估提供lldb超时,以微秒表示,因此调用myBug()的五秒超时看起来像

(lldb) expr -t 5000000 -- myBug()
error: Execution was interrupted, reason: breakpoint 1.1.
The process has been returned to the state before expression evaluation.
(lldb)

如果您的工作流程出现这种情况,可以在http://bugreport.apple.com/在Xcode上提交有关此问题的错误报告。