我经常使用 PostgreSQL 进行调试,它使用 SIGINT
在内部用于一些后端间信号。
因此在 gdb
下运行某些后端时执行往往会被打断很多。可以使用 signal
命令确保SIGINT
传递给程序并且它没有被 gdb
捕获... 但是然后 gdb
不响应命令行上的 control-C,因为它会发送 SIGINT
.
如果你运行:
handle SIGINT noprint nostop pass
gdb
会提示
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) y
有没有办法让 gdb 使用不同的中断信号?或者任何让我拥有 gdb
的替代方法忽略 SIGINT
?
(对于大多数 PostgreSQL 后端调试来说这不是问题,但对于后台工作人员和 autovacuum 来说这是一个痛苦)。
最佳答案
最终(像我一样)看到这个问题略有不同变化的读者可能会对这个问题更感兴趣:
Debugging a segmentation fault when I do ctrl c
...及其答案,即:
从 gdb 本身内部发送 SIGINT:
(gdb) 信号 2
(通常我会将链接作为简单评论发布在该页面上 OP 的问题下,但由于已经有 7 条评论,评论将被隐藏/掩埋。)
如果您在这里阅读了 OP 问题的所有详细信息,那么很明显我的回答对 OP 来说是不正确的。
但是,对于许多可以用相同标题描述的情况,我的回答是正确的:“调试使用 SIGINT 和 gdb 的程序”
关于c - 调试将 SIGINT 与 gdb 结合使用的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993909/