c - 如何找到<值优化出来>的数组的地址?

标签 c gcc optimization gdb

目前,我无法禁用 GCC 的优化。

是否存在一些工具,例如 objdump、readelf 等可以帮助我找到经过值优化的数组的地址?

如果成功,我可以使用 GDB 转储数组中的值。

最佳答案

如果它是静态数组,您可以使用映射文件:让 gcc 生成它(使用 -Wl,-Map,mymapfile.map)并查找地址(不熟悉 gcc 映射文件,但该地址通常是相对的)到加载二进制文件的地址)。否则,如果它是在堆上分配的,请在 malloc 中使用断点,检查它何时被调用以及您后面的数组的大小,并检查它返回的指针。或者在这两种情况下,正如 Alex 在评论中指出的那样:检查反汇编中的地址。

关于c - 如何找到<值优化出来>的数组的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279789/

相关文章:

c++ - C/C++ 双指针解引用问题

c++ - dylib 析构函数不会被调用

gcc - 如何使用 gcc 隐藏信息或使可执行函数不可搜索

gcc - 预取示例?

ios - 合成两个 CIImages 并在 UIImageView 问题中显示

用汇编函数编译 C 程序,反之亦然

c - C 中的系统命令作为变量

c - 动态分配的二维数组

c - 什么是 "extended integer types"?

mysql - 优化mysql慢查询