如何使用GDB打印变量的前n行?

时间:2016-12-22 11:56:25

标签: debugging gdb ada

在使用GDB进行调试时,我想要打印一个非常大的变量。但是,只应打印第一个 n 行。如何使用“print”GDB命令打印第一个 n 行?就像Linux中的“head”命令一样。

特别是,变量是结构/记录。

1 个答案:

答案 0 :(得分:1)

如果你有一个支持Ada的GDB,并假设非常大意味着一个数组,那么就使用切片。

(gdb) p x(1..3)
$2 = ((first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0))
(gdb) p x(1..5)
$3 = ((first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0))
(gdb) 

如果是记录,访问组件将减少输出:

(gdb) p y.x  
$2 = (a => 0 '["00"]', b => 0 '["00"]', c => 0 '["00"]', d => 0 '["00"]')
(gdb) p y.x.a
$3 = 0 '["00"]'
(gdb) 

否则,gdb,如果从命令行shell运行,可能会在UNIX上传递给more(1);在Gmacs内部,只要GDB输出文本,就可以进行各种输出处理。