c++ - GDB 如何处理 SIGSEGV

标签 c++ gdb signals handle segmentation-fault

当调试 C++ 程序时使用 gdb 发出 SIGSEGV,可以处理信号并要求停止。

gdb 如何处理这种情况??

已经搜索了 gdb 源代码,但找不到起点。

最佳答案

您不能自动忽略 SIGSEGV。无论如何,我也不建议这样做。尽管您可以让 gdb 忽略该信号而不将其传递给程序,但一旦信号处理程序返回并导致无限循环,内核将尝试重新运行有问题的指令。有关详细信息,请参阅 this answer

解决它的一种方法是跳过指令或更改寄存器值,这样它就不会出现段错误。该链接显示了设置寄存器的示例。您还可以使用 jump 命令跳过一条指令。

关于c++ - GDB 如何处理 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35448423/

相关文章:

c - 堆栈溢出(shellcoders 手册)

c - memset 没有设置 num 个字节?

c - 更好地理解 C 中的信号捕获(即 SIGINT/SIGQUIT)

c++ - boost::spirit::lex 中的访问冲突

c++ - 我无法使用 libcurl 获取 http 代码 404

linux - 将 nokaslr 添加到内核命令行

c++ - DBus Glib,发送带有嵌套结构的信号

c - 我想连续从COM端口接收数据,同时想写入文件

c++ - 调整窗口大小时游戏崩溃 (Directx9)

c++ - 十六进制、八进制、二进制转十进制(C++)