如何在GDB中逐行打印二维数组?以map[22][22]为例
如何在GDB中逐行查看22x22的二维数组?
我完全懂你现在的烦恼——GDB默认打印二维数组时会把所有内容堆在一起,不仅容易看混,还会被截断,尤其是你的map[22][22]规模不算小。下面几个实用方法能帮你轻松实现逐行打印:
方法1:手动指定单一行打印
如果你只想查看某几行的内容,直接用print命令指定行号就行,行号从0到21(对应数组的22行):
print map[0] # 打印第1行(索引0) print map[1] # 打印第2行(索引1) # 以此类推,替换数字为你想看的行号
这种方式最快捷,适合临时抽查特定行的数据。
方法2:定义GDB脚本批量打印所有行
如果需要一次性查看全部22行,可以在GDB里定义一个简单的循环脚本:
define print_map set $i = 0 while $i < 22 print map[$i] set $i = $i + 1 end end
输入完上面的代码后,直接输入print_map,GDB就会自动逐行打印整个二维数组的内容,每行单独输出,不会杂乱堆积。
方法3:自定义格式打印(更规整)
要是你希望输出格式更整洁,比如带行号、元素用空格分隔,可以用printf自定义打印逻辑:
define print_map_neat set $i = 0 while $i < 22 printf "Row %2d: ", $i set $j = 0 while $j < 22 printf "%d ", map[$i][$j] set $j = $j + 1 end printf "\n" set $i = $i + 1 end end
执行print_map_neat后,每行都会清晰显示行号和所有元素,排版更易读,适合需要仔细分析每行数据的场景。
小贴士:GDB里的$i、$j是临时变量,不会干扰你程序中的变量,放心使用就好~
内容的提问来源于stack exchange,提问作者이상도
相关产品推荐
相关产品推荐

