首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ELF文件中读取符号内容的Trace32命令

从ELF文件中读取符号内容的Trace32命令
EN

Stack Overflow用户
提问于 2016-11-28 03:55:50
回答 1查看 12.9K关注 0票数 5

问题场景:简单地说,我们是否有一个Trace32命令从加载到目标的ELF文件中读取符号(及其内容)?我们有这样一种特殊情况,即ELF文件的应用特定调试符号作为ELF中“.noload”部分的一部分,这意味着符号/内容是ELF文件的一部分(使用readelf -a xxxx.elf_file_name读取时可用),但不是最终生成的二进制映像的一部分,即当生成闪现到目标内存的xxx.bin时,ELF文件中的“.noload”部分被剥离掉。

  • “.noload”部分中的调试符号是静态赋值的,这些值在运行时不会更改。
  • 当我试图读取“.noload”部分的调试符号(编译为二进制并加载到trace32后)时,我看到trace32弹出窗口中标记了'MMU‘,这意味着trace32正在尝试从内存中读取符号内容,但无法访问,因为'.noload’部分的符号已经映射,但根本没有加载。

任何输入

  • 我需要一个trace32命令的帮助,它可以直接从ELF文件中读取符号内容,而不是从目标内存中读取符号内容。
  • 也不确定我是否可以在练习脚本中使用“readelf”?如果我们对上述查询没有任何解决方案,在这个方向上有什么帮助吗?
EN

回答 1

Stack Overflow用户

发布于 2016-11-28 11:08:32

使用命令

代码语言:javascript
复制
Data.LOAD.Elf myfile.elf [<optional address offset>] /NoCODE

选项/NoCODE指示TRACE32只从您的ELF加载删除符号,而不将任何代码加载到目标。您可以使用命令sYmbol.Browse查看符号。

但是,如果使用TRACE32将应用程序加载到目标,则不必先从ELF创建二进制文件。使用TRACE32,您还可以将ELF的PROGBITS部分直接加载到目标。在这种情况下,您只需使用Data.LOAD.Elf命令而不使用/NoCODE选项(在启用闪存编程之后)。

由于您使用的是MMU,所以您可能希望使用命令SYStem.Option.MMUSPACES ON来激活逻辑内存空间ID。然后用

代码语言:javascript
复制
Data.LOAD.Elf myfile.elf <space-ID>:<offset> /NoCODE

其中,“空格-ID”与MMU用于任务和“偏移”的空间ID匹配通常为零。

如果您正在嵌入式Linux上调试应用程序,则应该使用Linux的TRACE32 OS感知和Linux符号自动加载器将符号加载到正确的地址。

我认为没有任何理由需要在TRACE32内部使用“readelf”。无论如何,您可以使用命令OS.AreaOS.Command调用任何命令行程序。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40836941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档