在GDB中显示结构体的值

32
在GDB中,如果给定一个指向结构体的变量,print将显示原始指针值,x将显示指向的原始字节。有没有办法将指向的数据作为该结构体显示,即字段列表及其值?

也许这会有所帮助 https://dev59.com/AVvUa4cB1Zd3GeqPtGeV - fkl
1个回答

78
print *variable

如果你这样做,它将在GDB中显示该变量的值。 你还可以选择以缩进和换行的方式显示结构体:
$1 = {
  next = 0x0,
  flags = {
    sweet = 1,
    sour = 1
  },
  meat = 0x54 "Pork"
}

为此,您需要设置漂亮的打印格式:
set print pretty on

如果你想打印一个数组的值,你可以这样做:
print *array@len

是的,它打印了原始数据,但仍然无法将其识别为结构体中的值。如果我理解正确,问题是关于识别为结构体(即识别结构体中的字段),我认为这是不可能的。 - fkl
你的初始帖子(在编辑之前)只是关于print *array@len,它只能打印相同类型的数组成员。http://www.chemie.fu-berlin.de/chemnet/use/info/gdb/gdb_9.html。然而,对答案的后来编辑可能是一个解决方案。感谢您将其添加到我的知识中。 - fkl
能否打印结构体及其每个成员的类型名称? - Ð..

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接