我一直试图组建一种远程gdb代理,但我似乎找不到停止数据包的正确信号。我在哪里/如何找到gdb实际使用的信号数?至少来自Debian Jessie repo的gdb-multiarch很奇怪。
信号31显示为SIG37 - 实时事件37(我预期SIGUSR2) 如果我发送信号10,则dgb显示"不能向此远程系统发送信号。 SIGURG未发送。"并发送' c' -packet(我期待SIGBUS)。
通过远程和串行调试,我可以看到信号31和10实际上是由gdb接收的。
[编辑] 通过尝试我找到了前30个信号。这是第一个: (星号meand,不能继续调试) 2 SIGINT 4 SIGILL 5 SIGTRAP 6 SIGABRT * 7 SIGEMT 8 SIGFPE 9 SIGKILL 10 SIGURG * 11 SIGSTOP 12 SIGTSTP 13 SIGCONT * 14 SIGCHLD * 15 SIGTTIN * 16 SIGTTOU 17 SIGIO * 18 SIGXCPU *
[EDIT2]
[r $][T][1][0][#][b][5]Packet received: T10
...
Can't send signals to this remote system. SIGURG not sent.
Sending packet: $c#63...[\x00][\x00][\x00][\x00][\x00][
r +]Ack
答案 0 :(得分:1)
gdb远程协议使用自己的数字作为信号。这些必须由远程代理转换为正确的系统值。有关详细信息,请参阅the documentation(第一段);我认为信号编号只能在gdb头文件中使用。