我ngx_http_variable_value_t
在GDB(调试器)会话中遇到了一个结构(称为),我想打印它在控制台中具有的字段。
那可能吗?
Answers:
您可以使用GDB命令ptype
打印出结构或类的定义。
另外,用于ptype /o
打印结构中所有字段的偏移量和大小(例如pahole)。
(gdb) p &((struct foo *)0)->member
。拥有一些非骇客的东西会很好。
macro define offsetof(t, f) &((t *) 0)->f)
成~/.gdbinit
。然后就可以使用了(gdb) p offsetof(struct foo, member)
。
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"
},
}
p *((struct my_struct*) variable)
这将帮助您在gdb中打印struct的详细信息
我只是通过gdb的图形前端来完成此操作。在gdb在线文档中找到了此条目。希望能帮助到你。我相信这将需要使用调试信息创建代码。
ptype [arg] ptype接受与whatis相同的参数,但会打印该类型的详细说明,而不仅仅是类型的名称。