当调试 C++ 程序时使用 gdb 发出 SIGSEGV,可以处理信号并要求停止。
gdb 如何处理这种情况??
已经搜索了 gdb 源代码,但找不到起点。
最佳答案
您不能自动忽略 SIGSEGV。无论如何,我也不建议这样做。尽管您可以让 gdb 忽略该信号而不将其传递给程序,但一旦信号处理程序返回并导致无限循环,内核将尝试重新运行有问题的指令。有关详细信息,请参阅 this answer。
解决它的一种方法是跳过指令或更改寄存器值,这样它就不会出现段错误。该链接显示了设置寄存器的示例。您还可以使用 jump
命令跳过一条指令。
关于c++ - GDB 如何处理 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35448423/