Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/debugging/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 用gdb调试Fortran:显示所有变量的名称,但不显示其内容_Debugging_Gdb - Fatal编程技术网

Debugging 用gdb调试Fortran:显示所有变量的名称,但不显示其内容

Debugging 用gdb调试Fortran:显示所有变量的名称,但不显示其内容,debugging,gdb,Debugging,Gdb,我正在用gdb调试一个Fortran程序,在一个断点处,我试图用p/dcs(ii,inti+1)打印一个二维数组的元素,我得到了当前上下文中没有符号cs的消息。然而,cs显然在当前范围内可用-我刚刚跨过的行使用了它-虽然没有声明thare,但在模块级别(在同一模块中) 我试图找出哪些变量是可用的,看看我是否能找出为什么gdb不允许我查看这个变量的内容info locals对我没有多大帮助,因为我不需要一个局部变量,info variables需要花费很长时间才能完成,因为我有一对10000行的矩

我正在用gdb调试一个Fortran程序,在一个断点处,我试图用
p/dcs(ii,inti+1)
打印一个二维数组的元素,我得到了当前上下文中没有符号cs的消息。然而,
cs
显然在当前范围内可用-我刚刚跨过的行使用了它-虽然没有声明thare,但在模块级别(在同一模块中)

我试图找出哪些变量是可用的,看看我是否能找出为什么
gdb
不允许我查看这个变量的内容
info locals
对我没有多大帮助,因为我不需要一个局部变量,
info variables
需要花费很长时间才能完成,因为我有一对10000行的矩阵,它不仅打印每个变量的名称,还打印每个变量的内容

是否有办法只打印当前范围内所有可用变量的名称(可能还有维度)?当我在问的时候,是否有什么明显的东西我在这里遗漏了,可以解释为什么我不能查看
cs(ii,inti+1)

对于最初的“当前上下文中没有符号cs”问题,我会在反汇编时快速查看函数是否正在内联

只需打印全局变量的名称和类型就可以通过Python脚本实现

将此保存到list-globals.py

import gdb
block = gdb.block_for_pc(long(gdb.parse_and_eval('$pc'))).global_block
for symbol in block:
    gdb.write('%s: %s\n' % (symbol.print_name, symbol.type))
然后运行:

$ gdb /bin/true
(gdb) start
(gdb) source list-globals.py
不过,您的gdb需要在启用Python脚本的情况下编译