调试文件格式混淆:ELF / BIN

时间:2011-04-26 13:09:12

标签: c elf bin

我目前正在使用一些μC系统,我想更详细地了解下面发生了什么。 我目前正在使用Motorola Coldfire和ARM 9.我正在使用GCC工具链作为交叉编译器!

ELF文件包含的信息超出了运行应用程序所需的信息!一个BIN文件就足够了!我知道ELF格式保留了一些额外的信息。它将符号及其地址连接在内存中,对吧?是否仅为软件调试器(例如GDB)提供额外信息,或者是否也将某些信息传输到目标设备?因此,如果有一个断点命中,片上调试器告诉主机相关的地址,软件调试器可以显示相关的代码段而不是无聊的内存地址? 我可以只使用BIN文件进行调试(好吧这会很愚蠢,但基本上?)?

对此主题的一些启示表示赞赏!

你好吗

1 个答案:

答案 0 :(得分:2)

您是对的,ELF文件包含额外信息,例如用于调试的符号。通常在μC环境中,您将使用BIN文件在处理器上执行(通常加载到闪存中),然后将ELF文件传递给GDB进行调试。在开发PC上运行交叉编译的GDB时,它将使用ELF文件作为参考(因此它知道代码行号,变量名等),但它将与片上调试器通信以读取内存位置,设置要使GDB与片上调试器通信,可以在GDB中使用target remote命令,无论需要什么参数(通常是网络地址和端口的串行端口)都要传递它。