GDB命令打印分段错误的完整异常信息?

时间:2012-06-21 23:56:00

标签: gdb x86

我正在GDB下调试优化的Linux可执行文件。我们的程序因分段错误而崩溃。然而,错误指令似乎实际上没有访问无效指针;它基本上是mov 0xf00(%ebx), eax op,其中0xf00(%ebx)是有效内存。至少,它会在我们x地址时显示。

查看当前捕获的异常的所有详细信息的GDB命令是什么,包括错误操作码尝试访问的确切内存地址?这个信息应该在异常陷阱框架中,但我不知道如何通过GDB获取。

这适用于Ubuntu下的x86。

1 个答案:

答案 0 :(得分:1)

  

然而,错误指令似乎没有实际访问无效指针;它基本上是mov 0xf00(%ebx),eax op其中0xf00(%ebx)是有效内存。至少,它出现在我们x的地址时。

我猜这个地址实际上无效(mmapPROT_NONE编辑。

GDB可以检查它的原因是,在Linux上,ptrace(GDB用来访问劣质内存)将很乐意从这些地址读取,而应用程序本身则无法读取。

  

查看当前捕获的异常的所有详细信息的GDB命令是什么

当GDB因信号而停止时,请尝试print $_siginfo。文档here