5 编译调试程序

通常一个可执行文件不会包含任何关于源代码的信息,例如变量名或者行号--可执行文件仅仅是一系列编译器产生的机器指令。这不利于调试,因为如果程序异常终止很难找到错误的原因。

GCC提供'-g'调试选项在目标文件和可执行文件中存储额外调试信息。这些调试信息允许根据指定的机器指令查找源文件中相应的代码行来跟踪错误代码。调试信息也可以被调试器跟踪程序的执行,例如GNU调试器gdb(更多信息请查看"Debugging with GDB: The GNU Source-Level Debugger")。使用调试器也可以在程序运行的时候查看变量的值。

调试选项通过存储函数名和变量名和他们对应的源代码行号为一个符号表在目标文件和可执行文件中来达到跟踪目的。