我正在使用gdb调试Fortran程序,当我在断点处尝试使用p/d cs(ii,inti+1)
打印二维数组的元素时,我得到消息当前没有符号cs然而,cs
在当前范围内显然是可用的 - 我刚刚步过的行使用它 - 尽管没有声明,但是在模块级别(在同一模块中)。
我试图找出 可用的变量,看看我是否能弄清楚为什么gdb
不会让我查看这个变量的内容。 info locals
对我没有太大帮助,因为我不是在局部变量之后,而info variables
需要永远完成,因为我有几个矩阵有10 000行并且它不仅打印每个变量的名称,但也包括内容。
是否有办法只打印当前范围内所有可用变量的名称(以及可能的维度)?虽然我在问 - 有什么显而易见的我错过了解释为什么我无法查看cs(ii,inti+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脚本的情况下进行编译。