首页 文章

GDB使用哪些信号编号?

提问于
浏览
0

我一直试图组建一种“远程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 回答

  • 1

    gdb远程协议使用自己的数字作为信号 . 这些必须由远程代理转换为正确的系统值 . 详情请见the documentation(第一段);我认为信号编号仅在gdb头文件中可用 .

相关问题