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

时间:2013-04-22 15:33:06

标签: debugging gdb

我正在使用gdb调试Fortran程序,当我在断点处尝试使用p/d cs(ii,inti+1)打印二维数组的元素时,我得到消息当前没有符号cs然而,cs在当前范围内显然是可用的 - 我刚刚步过的行使用它 - 尽管没有声明,但是在模块级别(在同一模块中)。

我试图找出 可用的变量,看看我是否能弄清楚为什么gdb不会让我查看这个变量的内容。 info locals对我没有太大帮助,因为我不是在局部变量之后,而info variables需要永远完成,因为我有几个矩阵有10 000行并且它不仅打印每个变量的名称,但也包括内容。

是否有办法只打印当前范围内所有可用变量的名称(以及可能的维度)?虽然我在问 - 有什么显而易见的我错过了解释为什么我无法查看cs(ii,inti+1)的内容吗?

1 个答案:

答案 0 :(得分: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脚本的情况下进行编译。