我一次又一次地得到这个奇怪的错误
变量iw
的声明如下:
integer iw (line 28)
我必须提到的另一件事是我在上面几行打印声明正确执行:
write(*,*) ' IW=', iw (line 89)
但接下来几行,我得到了:
(gdb) p iw
Segmentation fault (core dumped)
因此标题中所述的问题由两部分组成:(a)如何防止gdb在此处打印出段错误,以及(b)我可以从segfault中学到什么?
答案 0 :(得分:3)
当gdb崩溃时,它总是gdb中的一个bug。我担心,当发生这种情况时,你几乎没有选择。但是,您没有说明您使用的是哪个版本的gdb,因此升级可能有所帮助。
否则,最好的办法是尝试提出一个最小的例子并提交一个bug。一个优秀的错误报告还包括来自gdb的堆栈跟踪。您可以尝试以下方式:
$ gdb --args gdb your-program
然后在外部gdb中运行内部gdb;然后调试你的程序;当内部gdb崩溃时,使用bt
获取可以在gdb错误报告中提交的堆栈跟踪。
如果你有gdb的调试符号,这才真正有效。如果你想尝试修复gdb,你最好自己建立。