缘起
目前在项目中做功能时,发现一个结构体异常的大,不到30k,我想找到这个结构中的那个元素比较占用空间,于是想起gdb可以出场了,但是没有按照预期的过程进行,听我慢慢道来。
需求
存在如下结构体
struct A{
int a;
int b;
int c;
};
在gdb中输出如下比较好,可能想的比较简单
struct A
a 的大小
b 的大小
c 的大小
初步测试
我使用gdb跟踪进程,发现能打印只有结构成员的,这个可以参考下这里,也可查看这里,可以有个初步的认识,之前也用过但是没有这方面的思考,但是这些不满足我的需求。
之前也有过参考offset的经验,按照需求,我可以写一些方法或脚本把这些现成员现实出来,比如使用0地址+类型转换。
探索
稍加思考下,编写脚本应该不通用,毕竟成员需要自己写,目前我