C++ gdb 7.0,信号SIGCONT不';不要中断pause()调用

C++ gdb 7.0,信号SIGCONT不';不要中断pause()调用,c++,c,linux,gdb,C++,C,Linux,Gdb,在被指向一个新特性之后,我为自己构建了一个GDB7.0版本,并且碰巧在我的道路上仍然有这个版本 为了逐步完成一些新代码,我添加了一个pause()调用,希望能够像这样完成: (gdb) b 5048 Breakpoint 1 at 0x2b1811b25052: file testca.C, line 5048. (gdb) signal SIGCONT Continuing with signal SIGCONT. Breakpoint 1, FLUSH_SUDF_TEST (h=@0x2b

在被指向一个新特性之后,我为自己构建了一个GDB7.0版本,并且碰巧在我的道路上仍然有这个版本

为了逐步完成一些新代码,我添加了一个pause()调用,希望能够像这样完成:

(gdb) b 5048 Breakpoint 1 at 0x2b1811b25052: file testca.C, line 5048. (gdb) signal SIGCONT Continuing with signal SIGCONT. Breakpoint 1, FLUSH_SUDF_TEST (h=@0x2b1811b061c0) at testca.C:5048 5048 rc = h.SAL_testcaFlushPagesByUDF( uPrimary - 1, uPrimary ) ; (gdb)b 5048 断点1位于0x2b1811b25052:文件testca.C,第5048行。 (gdb)信号SIGCONT 继续信号SIGCONT。 断点1,在testca.C:5048处刷新SUDF测试(h=@0x2b1811b061c0) 5048 rc=h.SAL_testcaFlushPagesByUDF(uPrimary-1,uPrimary); (这是系统gdb的版本6.6)

在GDB7.0中,我在尝试此操作时从未遇到post-pause()断点。随着gdb 7中的各种多进程调试更改,是否有人知道信号处理是否必须以不同的方式处理以及如何处理?

除非调用信号处理程序,否则
pause()
函数不会返回(请参阅和)

要使它在程序收到SIGCONT后返回,必须为SIGCONT安装处理程序。请尝试使用以下示例查看:

#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

volatile int caught_signal = 0;

void handler(int sig)
{
    caught_signal = sig; 
}

int main()
{
    signal(SIGCONT, handler);
    pause();
    printf("Caught signal: %d, %s\n",
            caught_signal, strsignal(caught_signal));
    return 0;
}

我从未见过使用“signal SIGCONT”从断点继续。通常使用“continue”。你试过了吗?断点是在pause()系统调用之后设置的,目的是到达那个点(例如,你可以在GDB6.6上尝试)。啊。杰出的非常感谢你。我可以使用我们劫持的SIGPROF作为没有明显副作用的处理器。
(gdb) break 17
Breakpoint 1 at 0x80484b3: file pause.c, line 17.
(gdb) continue
Continuing.
^C
Program received signal SIGINT, Interrupt.
0x0012d422 in __kernel_vsyscall ()
(gdb) signal SIGCHLD
Continuing with signal SIGCHLD.
^C
Program received signal SIGINT, Interrupt.
0x0012d422 in __kernel_vsyscall ()
(gdb) signal SIGCONT
Continuing with signal SIGCONT.

Breakpoint 1, main () at pause.c:17
17      printf("Caught signal: %d, %s\n",
(gdb)