我一直试图组建一种“远程gdb代理”,但我似乎找不到停止数据包的正确信号 . 我在哪里/如何找到gdb实际使用的信号数?至少来自Debian Jessie repo的gdb-multiarch很奇怪 .
信号31显示为SIG37 - 实时事件37(我预期SIGUSR2),如果我发送信号10,则dgb显示“无法向此远程系统发送信号.SIGURG未发送” . 并发送一个'c'包(我期待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
1 回答
gdb远程协议使用自己的数字作为信号 . 这些必须由远程代理转换为正确的系统值 . 详情请见the documentation(第一段);我认为信号编号仅在gdb头文件中可用 .