GDB - 调试符号

调试符号表将编译后的二进制程序中的指令映射到源代码中相应的变量、函数或行。此映射可能类似于:

  • 程序指令 ⇒ 项目名称、项目类型、原始文件、定义的行号。

符号表可以嵌入到程序中或存储为单独的文件。因此,如果您计划调试程序,则需要创建一个符号表,其中包含调试程序所需的信息。

我们可以推断出有关符号表的以下事实:

  • 符号表适用于程序的特定版本 - 如果程序发生变化,则必须创建新表。

  • 调试版本通常比零售(非调试)版本更大且更慢;调试版本包含符号表和其他辅助信息。

  • 如果您希望调试您自己未编译的二进制程序,则必须从作者处获取符号表。

为了让 GDB 能够从符号表中逐行读取所有信息,我们需要对其进行稍微不同的编译。通常我们将程序编译为:

gcc hello.cc -o hello

我们不需要这样做,而是需要使用 -g 标志进行编译,如下所示:

gcc -g hello.cc -o hello