gdb输出结构体成员的偏移量

本文讲述了在项目中遇到结构体过大问题,通过gdb来查找占用空间的成员。文章详细介绍了需求、初步测试、探索过程,以及最终采用编写Python脚本和修改gdb配置文件的解决方案,实现结构体成员的偏移量显示,并提醒读者该方法适用于gdb7.2及以上版本。
摘要由CSDN通过智能技术生成

缘起

目前在项目中做功能时,发现一个结构体异常的大,不到30k,我想找到这个结构中的那个元素比较占用空间,于是想起gdb可以出场了,但是没有按照预期的过程进行,听我慢慢道来。

需求

存在如下结构体

struct A{
        int a;
        int b;
        int c;
};

在gdb中输出如下比较好,可能想的比较简单

struct A
	a 的大小
	b 的大小
	c 的大小

初步测试

我使用gdb跟踪进程,发现能打印只有结构成员的,这个可以参考下这里,也可查看这里,可以有个初步的认识,之前也用过但是没有这方面的思考,但是这些不满足我的需求。
之前也有过参考offset的经验,按照需求,我可以写一些方法或脚本把这些现成员现实出来,比如使用0地址+类型转换。

探索

稍加思考下,编写脚本应该不通用,毕竟成员需要自己写,目前我

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值