如何列出所有结构定义并获取gdb中的结构大小?

时间:2014-11-28 10:03:41

标签: c gdb structure sizeof

当您知道结构名称时,可以使用

ptype,但无论如何都要列出所有结构定义而不是查看源代码?

print sizeof()可用于打印结构尺寸,但是我们可以在不事先知道其名称的情况下打印所有结构尺寸吗?

1 个答案:

答案 0 :(得分:-1)

编辑:

gdb使用struct'标记'用于显示结构详细信息的名称     (字段定义,字段值,sizeof等)     (以及用于定义结构的命名结构定义)

所以将结构定义为

struct struct_t
{
    int field1;
    ...
};

然后gdb可以在代码中找到/显示结构的所有细节

这是一个例子

#include <stdio.h>

struct myStruct
{
    int alpha;
    int brovo;
};



 int main ( void )
 {
     struct myStruct structInstance;

     structInstance.alpha = 1;
     structInstance.brovo = 2;

     printf( "%d %d\n", structInstance.alpha, structInstance.brovo );
 } // end function: main

让我们说生成的可执行文件名为untitled

然后按以下方式运行gdb

gdb untitled
br main
r

然后显示结构的内容:

p structInstance

将输出以下内容

$1 = {alpha = -8352, brovo = 32767}

请注意,p命令在结构初始化之前。

s
s
p structInstance

将输出:

$2 = {alpha = 1, brovo = 2}