c - 调试将 SIGINT 与 gdb 结合使用的程序

标签 c postgresql debugging gdb

我经常使用 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/

相关文章:

c++ - Visual C++ 中的 _32_ 和 _64_ 等价物

postgresql - postgres 分区表上的索引行为(创建和删除)

postgresql - 在 Postgres 中创建一个触发器,它将一条记录插入到另一个带有添加列的表中

c# - 如何以编程方式在与父进程相同的 Visual Studio 调试 session 中启动子进程?

c - stdio 精密 fprint

用于更复杂功能的 C 宏

计算C程序中特定函数所花费的时间

postgresql - 无法实例化 SpatialIntegrator

Javascript - 如何显示错误,例如访问不存在的键对象而不是未定义?

c - 在 MakeFile 中使用调试器