2

使用 GDB 在 fortran 代码中打印二维数组的值时遇到问题。

(gdb) print var(1,2)
no such vector element

经过广泛的搜索,我发现了许多关于这个问题的帖子,日期为 2007 年至 2010 年。大多数以有人建议补丁结束。当前版本(我使用的是 7.4-2012.04)中是否解决了此问题?目前没有关于该主题的帖子,是否已修复或有合适的解决方法?

一个建议是切换到 c

(gdb) set language c
(gdb) print neighbours
$47 = 0xbfaeae44
(gdb) print *neighbours
$48 = 0xbfaeae44
(gdb) print 0xbfaeae44
$49 = 3215896132

如何打印指向的值并使用它进行指针运算?

谢谢

4

2 回答 2

1

一种可能的解决方案是使用从 Archer (git) http://sourceware.org/gdb/wiki/ArcherBranchManagement分支 archer-jankratochvil-vla 获得的 gdb。我已经用 EGit(Eclipse) 下载了,我已经编译它并在 Mandriva 2010/2011 和 Ubuntu Precise Pengolin 中安装了 ( ./configure, make, )。sudo make install为此,您必须安装一些软件包,这取决于您的发行版。如果出现错误,您会收到一些消息,以帮助您找到丢失的包。在 Ubuntu 中,默认情况下会在命令行上启动新的 gdb。我在 Eclipse (Photran) 和 NetBeans 中使用了获得的 gdb,它在 GUI 环境中工作得很好,几乎就像 Windows 中的商业 IDE。

于 2013-02-19T22:35:05.093 回答
1

是的,过去曾有过这方面的问题。不确定这在最新的 gdb 中是否属实。

或者,您可以使用免费提供且具有更好 GUI 的dbx(来自Solaris Studio )。顺便说一句,Solaris Studio 包括一个调试器、分析器、C/C++/Fortran 编译器、Sunperf 库,整个安装不到一个演出。

我总是使用 GNU 编译器,但 Solaris Studio 在使用 Fortran 程序时非常方便,特别是在调试/跟踪错误/警告、符合标准等时。无论如何,通常最好使用多个编译器检查您的代码。Analyzer 在使用 OpenMP(用于检测比赛)时特别有用。

于 2013-02-20T15:32:28.853 回答