gpt4 book ai didi

c++ - 给定一个使用 gcc 从 C++ 构建的 ELF 二进制文件,我如何确定其中某些类型的大小?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:51 25 4
gpt4 key购买 nike

有什么方法可以使用 binutils 工具来实现吗?例如:

// x.cc
typedef long long MyInt;
int main(int argc, char* argv[]) {
// blah blah blah
}

然后:

g++ -g x.cc -o a.out

如何分析 a.out 以获得 sizeof(MyInt)? GDB 可以做到,但我不想使用 GDB,因为它对于大型二进制文件来说真的很慢。

最佳答案

readelf 能够列出 dwarf 调试信息:

readelf -wi

找到 DW_TAG_variable 元素,它的 DW_AT_name 等于 MyInt,并且是表示此编译单元的 DW_TAG_compile_unit 的直接子元素。

使用 DW_AT_type 属性查找此变量的 DW_TAG_base_type。DW_AT_type 属性是从存储此类型信息的此 CU 开始的偏移量。这些偏移量列在输出的左侧(在 <> 中)。查看此 DIE 的 DW_AT_byte_size 属性。这是类型的大小(以字节为单位)。

关于c++ - 给定一个使用 gcc 从 C++ 构建的 ELF 二进制文件,我如何确定其中某些类型的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com