如何从 image/binary 文件中检查结构的值?

How to check the values of a struct from an image/binary file?

我是否可以在编译后查看结构的值? objdump -td 给出了函数定义,只给出了结构存储的地址。问题是当我 运行 一个程序时,我得到了结构中 threads/functions 之一的错误地址。目标单片机是lpc1347 (ARM Cortex-m3)。

objdump 解析目标文件(编译器的产品),这些文件是可重定位(不可执行)的 ELF 文件。在这个阶段,没有这些编译片段将 运行 处的内存地址这样的概念。

你有以下可能:

  • Link 你的 *.obj 文件到最终的非剥离(-g 传递给编译器)可执行 ELF 映像并使用 readelf.[=25= 解析它]
  • 通过将 -Wl,-Map,file.map 添加到您的 LDFLAGS 来生成链接器映射文件,并查看映射文件中数据所在的输出部分和地址。
  • 使用 debugger/gdb.