是否有一种更简单的方法可以使用GDB将C捕获的C结构捕获
Is there a simpler way to dump a C struct captured in a bin file using GDB
我正在尝试转储二进制文件的内容,该文件作为C struct的原始bin含量在我的嵌入式SW中获得。目前,我可以通过在GDB
中执行以下内容来实现这一目标- 文件路径/to/myelf.elf
- 运行路径/to/myelf.elf
- Ctrl-C发送Sigint
- 还原路径/到/mybin.bin 0xaddress
- p *( *my_c_strct)0xaddress
即使所有这些都可以使用JTAG连接到我的板子,但我的问题是为什么我必须"运行" ELF文件和"还原" bin文件的内容到内存,然后只能"打印"my_c_struct?
在理想的世界中,我希望能够拥有一个工具,如果我提供以下内容,它将抛弃我的结构内容。可能还有我可以在GNU工具链中使用的另一个工具,而我不知道!
- 提供符号文件
- 提供我的垃圾箱
- 然后打印my_c_struct
谢谢大家。
您没有解释您如何"还原"内容。我猜您使用GDB还原命令。
为什么我必须"运行" Elf File
restore
命令执行fopen
/fread
,然后写入目标内存,对于,它需要一个下等过程(由run
命令创建)。
和bin文件的"还原"内容到存储器
显然,GDB需要以某种方式可以访问数据以显示它。一种方法(他们正在这样做的方式)是将数据存储在内存中。
另一种方法是告诉GDB执行时间的内存是什么样的,使用core
命令实现。
不幸的是,该命令需要一个实际的正确格式的核心文件,以告诉它在执行时的位置中的位置。您可以将数据包装到带有Perl脚本的核心文件中,但这可能比值得更多的麻烦。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 结构字段名称与 GDB 中的 STL 数组冲突
- 是否有一种更简单的方法可以使用GDB将C捕获的C结构捕获
- GDB 打印结构的字段
- GDB:不在上下文中的结构的大小?
- GDB:请参阅未使用的结构类型定义
- 通过指针在 gdb/Eclipse CDT 调试监视中显示真实的对象层次结构
- 如何让 GDB 仅打印结构的特定成员的内容
- 当传入具有std::string成员的结构时,C++-gdb会给出意外的输出
- 其中是bin目录,它在Eclipse文件夹层次结构中包含gdb
- GDB Python脚本:通过C/C++结构字段迭代的任何示例