📅  最后修改于: 2020-10-15 11:01:28             🧑  作者: Mango
调试符号表将已编译的二进制程序中的指令映射到源代码中其对应的变量,函数或行。此映射可能类似于:
程序指令⇒项目名称,项目类型,原始文件,行号已定义。
符号表可以嵌入到程序中或存储为单独的文件。因此,如果您打算调试程序,则需要创建一个符号表,该表将具有调试程序所需的信息。
我们可以推断出有关符号表的以下事实:
符号表适用于该程序的特定版本-如果程序更改,则必须创建一个新表。
调试版本通常比零售(非调试)版本更大,更慢。调试版本包含符号表和其他辅助信息。
如果要调试二进制程序而不编译自己,则必须从作者那里获取符号表。
为了使GDB能够从符号表中逐行读取所有信息,我们需要对其进行一些不同的编译。通常,我们将程序编译为:
gcc hello.cc -o hello
而不是这样做,我们需要使用-g标志进行编译,如下所示:
gcc -g hello.cc -o hello