3

我目前正在使用一些 µC 系统,我想更深入地了解下面发生的情况。我目前正在使用 Motorola Coldfire 和 ARM 9。对于这两者,我都使用 GCC 工具链作为交叉编译器!

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

感谢您对这个主题的一些启示!

想你

4

1 回答 1

2

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

于 2011-08-02T22:51:04.677 回答