如何显示一个结构在gdb中的字段?

我在gdb会话中遇到了一个名为ngx_http_variable_value_t的结构,我想打印它在控制台中的字段。 那可能吗?

您可以使用gdb命令“ptype”打印出结构或类的定义。

如果你有内置的debugging符号,你应该能够打印值: print variableprint *variable如果它是一个指向结构的指针。

除了使用命令行选项外,还可以使用graphicsdebugging器。 我build议gdbgui ,但那里有不less。

截图

免责声明:我是gdbgui的开发者

set print pretty on

此选项还为p *my_struct_pointer提供换行和缩进。

你喜欢哪个:

 $2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"} 

要么:

 $3 = { path = { mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600 }, last = { { { hash = 3537271320, len = 2 }, hash_len = 12127205912 }, name = 0xffff88000659501c "../b.out" }, } 

我只通过gdb的graphics前端完成了这一点。 在gdb在线文档中find这个条目。 希望能帮助到你。 我相信这将要求代码是在包含debugging信息的情况下创build的。

ptype [arg] ptype接受与whatis相同的参数,但会打印该types的详细说明,而不仅仅是types的名称。

用GDBdebugging:符号

我会看看数据显示debugging器 。