关于gdb查看结构体出现的问题

love521bean love521bean 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <stdio.h>

struct NewStruct
{
unsigned char a;
unsigned char b;
};

int main()
{
char tmp[2];
char *tmp_p = tmp;
((struct NewStruct *)tmp_p)->a = 1;
printf("a = %d\n", ((struct NewStruct *)tmp_p)->a);

return 1;
}

运行到 printf("a = %d\n", ((struct NewStruct *)tmp_p)->a); 这一行时
用 p ((struct NewStruct *)tmp_p)->a
出来的错误是
no struct type named NewStruct

请注意程序是运行成功的,只是在gdb进行调试的时候看不到具体的值。
如果是以字节一个一个来看的话是可以看到,

例如

p *tmp
p *(tmp + 1)

这样两个值都能看到而且还可以更改,
但是如果结构体里面是bit的话,就没办法了

有没有高手帮忙啊

...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
love521bean
Linux/Unix社区 23,224 成员 74,535 内容