目录
当前位置: 首页 > 文档资料 > 100个 gdb 小技巧 >

保留未使用的类型

优质
小牛编辑
127浏览
2023-12-01
#include <stdio.h>

union Type {
  int a;
  int *b;
};

int main()
{
  printf("sizeof(union Type) is %lu\n", sizeof(union Type));
  return 0;
}

技巧

使用gcc -g编译生成的程序,是不包含union Type的符号信息:

(gdb) p sizeof(union Type)
No union type named Type.

如果想让gcc保留这些没有被使用的类型信息(猜测应该是sizeof在编译时即被替换成常数,所以gcc认为union Type是未使用的类型),则可以使用gcc -g -fno-eliminate-unused-debug-types进行编译:

(gdb) p sizeof(union Type)
$1 = 8

参见 gcc手册