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

OLL*_*OLL 1 xcode lldb

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

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

int myBug()
{
    while(1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我用LLDB调试这个并且类型print myBug()我得不到结果,那么(没有惊喜).然而,这意味着我无法再调试,因为LLDB被卡住而不能continue.有没有办法杀死print myBug()命令?到目前为止,唯一的解决方法是退出并重新启动所有内容 - 远非方便.

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

Jas*_*nda 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)
Run Code Online (Sandbox Code Playgroud)

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