是否有一种更简单的方法可以使用GDB将C捕获的C结构捕获

Is there a simpler way to dump a C struct captured in a bin file using GDB

本文关键字:GDB 结构 可以使 一种 更简单 是否 方法      更新时间:2023-10-16

我正在尝试转储二进制文件的内容,该文件作为C struct的原始bin含量在我的嵌入式SW中获得。目前,我可以通过在GDB

中执行以下内容来实现这一目标
  1. 文件路径/to/myelf.elf
  2. 运行路径/to/myelf.elf
  3. Ctrl-C发送Sigint
  4. 还原路径/到/mybin.bin 0xaddress
  5. p *( *my_c_strct)0xaddress

即使所有这些都可以使用JTAG连接到我的板子,但我的问题是为什么我必须"运行" ELF文件和"还原" bin文件的内容到内存,然后只能"打印"my_c_struct?

在理想的世界中,我希望能够拥有一个工具,如果我提供以下内容,它将抛弃我的结构内容。可能还有我可以在GNU工具链中使用的另一个工具,而我不知道!

  1. 提供符号文件
  2. 提供我的垃圾箱
  3. 然后打印my_c_struct

谢谢大家。

您没有解释您如何"还原"内容。我猜您使用GDB还原命令。

为什么我必须"运行" Elf File

restore命令执行fopen/fread,然后写入目标内存,对于,它需要一个下等过程(由run命令创建)。

和bin文件的"还原"内容到存储器

显然,GDB需要以某种方式可以访问数据以显示它。一种方法(他们正在这样做的方式)是将数据存储在内存中。

另一种方法是告诉GDB执行时间的内存是什么样的,使用core命令实现。

不幸的是,该命令需要一个实际的正确格式的核心文件,以告诉它在执行时的位置中的位置。您可以将数据包装到带有Perl脚本的核心文件中,但这可能比值得更多的麻烦。