为什么需要符号表进行调试

时间:2013-12-04 06:08:14

标签: c++ debugging rtos

我正在使用Lauterbauch调试我公司的嵌入式系统。

我的同事告诉我,我们要求二进制文件在目标中运行,我们需要运行二进制文件(src)的相同源代码和符号表文件(.elf)

我的问题是

  1. 为什么我们需要符号表进行调试?

  2. 在windows中我们调试二进制文件,在这里我们使用bin + elf文件进行调试?为什么有单独的精灵文件。

  3. 上面的应用程序是用C ++编写的,用gcc编译,OS是vxworks。

    我正在努力理解这些概念和创造者。要求用简单的例子以初学者的名义解释。

    由于

2 个答案:

答案 0 :(得分:3)

要根据源代码进行调试,需要知道哪个地址对应于哪个源代码行或变量名。此信息存储在符号表中,该表通常是可执行文件的一部分。该表未加载到RAM中以供执行,但是被各种读取可执行文件的工具(如调试器和链接器)使用。

在同一台机器上调试程序时,调试器可以直接在被调试的二进制文件中查找符号。

调试远程程序时,没有二进制文件可用,只是一个小小的服务器,可以执行简单的命令,如停止,启动,显示内存等。即使远程二进制文件包含符号,小服务器缺乏智能查找并传递给远程调试器。因此,调试器必须使用一个单独的本地二进制文件中的符号,该文件与正在调试的文件完全对应。

答案 1 :(得分:1)

您需要二进制文件中的符号表,以便在调试器中获取符号,而不仅仅是地址。