如何在没有当前断点可用时使gdb停止执行

时间:2014-01-24 01:59:41

标签: gdb

例如,我的代码是:

int main(){
    f();
    g();
    while(1){
        h();
    }
    ..
 }

我在f,g上设置了断点。当然,程序将停在f()/ g(),但是当我输入“c”然后它会继续运行。目前我必须输入“CTL + C”来阻止它。程序也被杀死了。

如果程序正在运行,有没有其他优雅的方法退出gdb而不杀死程序?

感谢

1 个答案:

答案 0 :(得分:1)

  

我必须输入“CTL + C”来阻止它。程序也被杀死了。

键入“CTL + C”,然后gdb将捕获SIGINT,然后键入detach,然后键入“Ctrl-D”或quit。 gdb将从您的进程中分离并退出。您的程序将继续运行,其父进程将变为init(PID = 1)

<小时/> 更新:

(gdb) info signals SIGINT
Signal        Stop      Print   Pass to program Description
SIGINT        Yes       Yes     No              Interrupt