如何在GDB中的代码中断之前显示行

时间:2014-03-16 21:44:22

标签: gdb

当我使用GDB时,有些情况下GDB告诉我代码断了什么行,有时候它没有说出一些我不理解的一般错误之外的事情。

有没有办法看到程序崩溃前执行的最后一行代码?例如,如果第50行导致seg故障或程序中断,GDB是否有办法自动显示第49行?

2 个答案:

答案 0 :(得分:2)

  

例如,如果第50行导致seg错误或程序中断,GDB是否有办法自动显示第49行?

当您在第50行获得SIGSEGV时,GDB将停止。如果你使用list命令,它会在第50行显示一个窗口,其中还包括第49行。

但请注意,绝对不能保证在第50行之前执行的最后一行是第49行。

答案 1 :(得分:2)

您可以在出现错误之前使用list来显示行。

如果是分段错误,有时您需要在帧堆栈中找到正确的帧。 您使用backtracebt查找您所在的框架,然后使用updown移动。

库代码中的一个框架不包含GDB的有用符号表来指示您的错误,并且大多数错误都发生在您编写的代码中,而不是标准库代码。

一旦得到正确的框架,就会在出错之前列出相应的代码。