如何防止gdb在打印时出现段错误或者我可以从中学到什么?

时间:2017-03-08 22:52:52

标签: fortran gdb

我一次又一次地得到这个奇怪的错误

变量iw的声明如下:

       integer iw         (line 28)

我必须提到的另一件事是我在上面几行打印声明正确执行:

      write(*,*) ' IW=', iw     (line 89)

但接下来几行,我得到了:

(gdb) p iw
Segmentation fault (core dumped)

因此标题中所述的问题由两部分组成:(a)如何防止gdb在此处打印出段错误,以及(b)我可以从segfault中学到什么?

1 个答案:

答案 0 :(得分:3)

当gdb崩溃时,它总是gdb中的一个bug。我担心,当发生这种情况时,你几乎没有选择。但是,您没有说明您使用的是哪个版本的gdb,因此升级可能有所帮助。

否则,最好的办法是尝试提出一个最小的例子并提交一个bug。一个优秀的错误报告还包括来自gdb的堆栈跟踪。您可以尝试以下方式:

$ gdb --args gdb your-program

然后在外部gdb中运行内部gdb;然后调试你的程序;当内部gdb崩溃时,使用bt获取可以在gdb错误报告中提交的堆栈跟踪。

如果你有gdb的调试符号,这才真正有效。如果你想尝试修复gdb,你最好自己建立。