【发布时间】:2014-05-24 19:10:32
【问题描述】:
我正在尝试跳出读取行循环进入 lldb,然后继续我跳出的地方。当我尝试使用 C-C 时,程序在向 lldb 发出“继续”命令后退出。
这里是示例代码:
#include<iostream>
#include<string>
using namespace std;
int main(){
string cmd;
while(true){
if (!getline(cin,cmd)) {
cout<<"ending on eof"<<endl;
break;}
else if (cmd=="GO INTO DEBUGGER"){
//??
}
else
cout<<"Got line: "<<cmd<<endl;
}
cout<<"Exiting program"<<endl;
return 0;
};
当这个程序被执行时,它只是回显输入行。当我使用 C-C 中断程序时,我跳回调试器。然后,当我在调试器中执行“继续”时,我没有返回循环,而是使用 EOF 消息退出。
如何从循环中断时返回到循环,使用 C-C 或使用某种命令代替“GO INTO DEBUGGER”子句(从“assert(0)”返回很少有效我找到了。
这都是在 Mac Mavericks 上用 clang++ 编译的。
注意:由于某种原因,lldb 回溯说它收到了 SIGSTOP,我认为 C-C 是 SIGINT,但我想我已经过时了。
【问题讨论】:
标签: c++ osx-mavericks interrupt lldb clang++