使用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
如何打印指向的值并用此指针算术?
由于
答案 0 :(得分:1)
一种可能的解决方案是使用从Archer(git)http://sourceware.org/gdb/wiki/ArcherBranchManagement获得的gdb,分支archer-jankratochvil-vla。我已经下载了EGit(Eclipse),我已经编译并安装了(./configure
,make
,sudo make install
)Mandriva 2010/2011和Ubuntu Precise Pengolin。为了做到这一点,你必须安装一些软件包,这取决于你的发行版。如果出现错误,您会收到一些消息,以帮助您找到丢失的包。在Ubuntu中,默认情况下,在命令行上启动新的gdb。我在Eclipse(Photran)和NetBeans中使用了获得的gdb,它在GUI环境中运行良好,几乎与Windows中的商业IDE一样。
答案 1 :(得分:1)
是的,过去有过这方面的问题。不确定在最新的gdb中是否属实。
或者,您可以使用免费提供且具有更好GUI的dbx(来自Solaris Studio)。 Btw Solaris Studio包括一个调试器,分析器,C / C ++ / Fortran编译器,Sunperf lib,整个安装不到一个演出。
我总是使用GNU编译器,但是在使用Fortran程序时,特别是在调试/跟踪错误/警告,符合标准等时,Solaris Studio非常方便。无论如何,通常使用多个编译器检查代码会更好。使用OpenMP(用于检测比赛)时,Analyzer特别有用。