rks*_*171 8 debugging fortran module
我编译了一个Fortran代码,其中包含几个模块,使用gfortran 4.4和intel 11.1,然后尝试使用gdb和DDT进行调试.在所有情况下,我都看不到模块中声明的任何变量的值.这些全局变量具有值,因为代码仍然正确运行,但我无法看到调试器中的值是什么.局部变量很好.我在网上其他地方找不到解决这个问题的方法很困难,所以也许没有直接的解决方案,但如果我看不到任何全局变量的值,那么调试我的代码真的很困难.
小智 6
对于较新的GDB(如果我没记错的话,7.2),调试模块很简单.参加以下计划:
module modname
integer :: var1 = 1 , var2 = 2
end module modname
use modname, only: newvar => var2
newvar = 7
end
Run Code Online (Sandbox Code Playgroud)
你现在可以运行:
$ gfortran -g -o mytest test.f90; gdb --quiet ./mytest
Reading symbols from /dev/shm/mytest...done.
(gdb) b 6
Breakpoint 1 at 0x4006a0: file test.f90, line 6.
(gdb) run
Starting program: /dev/shm/mytest
Breakpoint 1, MAIN__ () at test.f90:6
6 newvar = 7
(gdb) p newvar
$1 = 2
(gdb) p var1
No symbol "var1" in current context.
(gdb) p modname::var1
$2 = 1
(gdb) p modname::var2
$3 = 2
(gdb) n
7 end
(gdb) p modname::var2
$4 = 7
(gdb)
Run Code Online (Sandbox Code Playgroud)
小智 3
在 gdb 中,尝试使用诸如 __ modulename __ variablename之类的名称引用全局变量
您可以使用 nm 和 grep 检查这是否是正确的修改方案,以在程序的符号中查找全局变量之一。
如果这不起作用,请确保您使用的是最新版本的 gdb。
这是关于此问题的线程:http://gcc.gnu.org/ml/fortran/2005-04/msg00064.html
| 归档时间: |
|
| 查看次数: |
5175 次 |
| 最近记录: |