使用GDB打印复杂结构

时间:2013-07-31 11:01:47

标签: c gdb structure

请考虑以下结构:

/* Complex Structure */
typedef struct
{
char_t  s4_1 [15];
int_t   s4_2;
} struct4_st;

typedef struct
{
char_t  s3_1 [15];
int_t s3_2;
} struct3_st;

typedef struct
{
struct3_st  s2_1;
struct4_st  s2_2;
} struct2_st;


typedef struct
{
int_t   s1_1;
char_t  s1_2;
struct2_st s1_3;
} struct1_st;

struct sample
{
    int_t sample1;
    int_t sample2;
char_t sample3[20];
struct1_st sample4;
} test;

如果我在包含此结构的函数上放置断点,我可以以漂亮的打印格式打印此结构的参数。

我的要求是:

我想使用GDB输出编写代码来填充这些结构。

是否有任何高级命令可以将每个结构成员分配给单独的行,例如:

gdb$ <command> test

必需输出:

test.sample1=1
test.sample2=2;
test.sample3="hello"
test.sample4.s1_1=3
test.sample4.s1_2='t'

感谢。

1 个答案:

答案 0 :(得分:2)

gdb中没有内置命令来执行此操作。

如果您的gdb启用了Python,那么自己编写它并不困难。