我正在使用Lauterbauch调试我公司的嵌入式系统。
我的同事告诉我,我们要求二进制文件在目标中运行,我们需要运行二进制文件(src)的相同源代码和符号表文件(.elf)
我的问题是
为什么我们需要符号表进行调试?
在windows中我们调试二进制文件,在这里我们使用bin + elf文件进行调试?为什么有单独的精灵文件。
上面的应用程序是用C ++编写的,用gcc编译,OS是vxworks。
我正在努力理解这些概念和创造者。要求用简单的例子以初学者的名义解释。
由于
答案 0 :(得分:3)
要根据源代码进行调试,需要知道哪个地址对应于哪个源代码行或变量名。此信息存储在符号表中,该表通常是可执行文件的一部分。该表未加载到RAM中以供执行,但是被各种读取可执行文件的工具(如调试器和链接器)使用。
在同一台机器上调试程序时,调试器可以直接在被调试的二进制文件中查找符号。
调试远程程序时,没有二进制文件可用,只是一个小小的服务器,可以执行简单的命令,如停止,启动,显示内存等。即使远程二进制文件包含符号,小服务器缺乏智能查找并传递给远程调试器。因此,调试器必须使用一个单独的本地二进制文件中的符号,该文件与正在调试的文件完全对应。
答案 1 :(得分:1)
您需要二进制文件中的符号表,以便在调试器中获取符号,而不仅仅是地址。