gdb给了我无限的“爱”;程序接收信号SIGTSTP“;当我试图恢复时

gdb给了我无限的“爱”;程序接收信号SIGTSTP“;当我试图恢复时,gdb,pthreads,Gdb,Pthreads,我在gdb中运行vlc,并使用^Z中断它(因为^C不工作)。在检查了一些堆栈帧和变量之后,我尝试使用“cont”来恢复程序,但它一直给我带来了错误 Program received signal SIGTSTP, Stopped (user). [Switching to Thread 0x7fffd8d8e700 (LWP 19285)] 0x00007ffff700247c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libp

我在gdb中运行vlc,并使用^Z中断它(因为^C不工作)。在检查了一些堆栈帧和变量之后,我尝试使用“cont”来恢复程序,但它一直给我带来了错误

Program received signal SIGTSTP, Stopped (user). 
[Switching to Thread 0x7fffd8d8e700 (LWP 19285)] 
0x00007ffff700247c in pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib64/libpthread.so.0
实际上,只有第一行是相同的。LWP id在19285和19284之间循环,地址和功能也交替

我试过“cont-a”,但它说 `-“a”在全停模式下没有意义

恢复两个线程的正确过程是什么?

当调用“cont”足够多次(每个线程一次)应该恢复应用程序时,对我来说从^Z恢复最有效的方法是

signal SIGCONT

请注意,先尝试“cont”然后再尝试“signal SIGCONT”可能会使gdb处于一种奇怪的状态。

我认为这是因为没有处理SIGTSTP信号。当您恢复执行时,程序会看到信号并再次停止

根据

或者,如果信号为零,则在不发出信号的情况下继续执行。当您的程序因信号而停止时,这非常有用,并且在使用continue命令恢复时可以看到该信号<代码>信号0使其在没有信号的情况下恢复

因此,要回答您的问题,请尝试在GDB中执行
信号0
命令,它应该会继续执行

此外,如果您不希望程序在SIGTSTP或任何信号处停止,可以使用
handle
命令定义GDB接收信号时的行为。请参阅有关如何执行此操作的更多说明