假设定义为:int a[100]键入print a,gdb会自动将其显示为数组:1, 2, 3, 4...。但是,如果a作为参数传递给函数,则gdb将其视为普通的int指针,类型print a将显示:(int *)0x7fffffffdaa0。如果我想将a作为数组查看,应该怎么做?
int a[100]
print a
1, 2, 3, 4...
a
(int *)0x7fffffffdaa0
pes8fvy91#
请参阅here.简而言之,您应该执行以下操作:
p *array@len
webghufk2#
*(T (*)[N])p,其中T是类型,N是元素数,p是指针。
*(T (*)[N])p
zbsbpyhn3#
使用x命令。
x
(gdb) x/100w a
5lhxktic4#
gdb
printf
正如@Ivaylo Strandjev在这里所说,一般语法是:
print *my_array@len # OR the shorter version: p *my_array@len
打印my_array的前10个字节的示例:
my_array
print *my_array@10
**[推荐!]自定义printf-style打印格式:**但是,如果上面的命令看起来像垃圾,因为它试图将值解释为字符,您可以强制使用不同的格式选项,如下所示:
print/x *my_array@10
print/d *my_array@10
print/u *my_array@10
print/<format> *my_array@10
printf()
<format>
byteArray
uint8_t
p *byteArray@16
(gdb) p *byteArray@16 $4 = "\000\001\002\003\004\005\006\a\370\371\372\373\374\375\376\377" (gdb) print/x *byteArray@16 $5 = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff} (gdb) print/d *byteArray@16 $6 = {0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1} (gdb) print/u *byteArray@16 $7 = {0, 1, 2, 3, 4, 5, 6, 7, 248, 249, 250, 251, 252, 253, 254, 255}
在我的例子中,最好的版本,我想看到的正确表示,是最后一个使用print/u将数组打印为无符号整数的版本,因为它毕竟是一个uint8_t无符号整数数组:
print/u
(gdb) print/u *byteArray@16 $7 = {0, 1, 2, 3, 4, 5, 6, 7, 248, 249, 250, 251, 252, 253, 254, 255}
6mzjoqzu5#
(int[100])*pointer为我工作,感谢@Ruslan评论中的建议
(int[100])*pointer
5条答案
按热度按时间pes8fvy91#
请参阅here.简而言之,您应该执行以下操作:
webghufk2#
*(T (*)[N])p
,其中T是类型,N是元素数,p是指针。zbsbpyhn3#
使用
x
命令。5lhxktic4#
如何使用
gdb
调试器查看或打印 * 任何数组 * 中 * 任何数量的字节 , 任何printf
风格的格式 *正如@Ivaylo Strandjev在这里所说,一般语法是:
打印
my_array
的前10个字节的示例:**[推荐!]自定义
printf
-style打印格式:**但是,如果上面的命令看起来像垃圾,因为它试图将值解释为字符,您可以强制使用不同的格式选项,如下所示:print/x *my_array@10
=十六进制print/d *my_array@10
=有符号整数print/u *my_array@10
=无符号整数print/<format> *my_array@10
=根据一般printf()
-style format string,<format>
打印下面是我的调试器中的一些真实的例子,从一个名为
byteArray
的uint8_t
数组中打印16个字节。注意第一个例子有多难看,只有p *byteArray@16
:在我的例子中,最好的版本,我想看到的正确表示,是最后一个使用
print/u
将数组打印为无符号整数的版本,因为它毕竟是一个uint8_t
无符号整数数组:6mzjoqzu5#
(int[100])*pointer
为我工作,感谢@Ruslan评论中的建议