GDB调试C/C++程序全攻略

需积分: 9 3 下载量 156 浏览量 更新于2024-07-20 收藏 274KB PDF 举报
"GDB中文手册提供了详细的GDB调试指南,包括如何在C/C++程序中添加调试信息、启动GDB的不同方式以及GDB启动参数的介绍。" GDB(GNU调试器)是一个强大的源代码级调试器,主要用于C和C++程序,但也支持其他语言。在使用GDB进行调试前,必须在编译源代码时添加调试信息。这通常通过在编译命令中添加`-g`参数来实现。例如,使用`cc -g hello.c -o hello`或`g++ -g hello.cpp -o hello`,这样生成的可执行文件将包含调试信息,使得GDB能够识别函数名和变量名,而非仅仅显示内存地址。 启动GDB有多种方法: 1. `gdb program`: 直接调试指定的执行文件`program`,通常该文件位于当前目录。 2. `gdb program core`: 调试程序和核心转储文件(core dump),`core`文件是在程序异常终止后生成的,包含了程序崩溃时的状态信息。 3. `gdb pid`: 如果程序是一个正在运行的服务,可以通过其进程ID(PID)附加到GDB进行调试。 GDB启动时可以设置各种参数以定制其行为。一些常见的参数包括: - `-symbols [file] (-s)`: 从指定的文件中读取符号表。 - `-exec [file] (-e)`: 调试指定的可执行文件。 - `-se [file]`: 上述两个参数的缩写。 - `-core [file] (-c)`: 读取核心转储文件。 - `-pid number (-p)`: 在指定进程ID的程序上启动调试。 - `-directory [directory] (-d)`: 将`directory`添加到源代码搜索路径。 - `-readnow (-r)`: 一次性加载所有符号表,增加启动时间但提高后续调试速度。 还有一些选择性参数,例如: - `-quiet / -silent / -q`: 启动GDB时不显示版权信息。 - `-windows / -w`: 启动图形用户界面(GUI),与之相反的`-nowindows / -nw`会关闭GUI(如果GDB支持的话)。 - `-cd [directory]`: 改变GDB的工作目录至`directory`。 - `-tty [device] (-t)`: 指定设备作为程序的标准输入输出。 - `--args`: 将其后的命令行参数传递给程序。 了解并熟练使用这些参数,可以帮助开发者更有效地调试程序,找到并解决问题。在深入使用GDB的过程中,还可以学习到更多高级功能,如断点设置、单步执行、查看和修改变量值、跟踪调用栈等,这些都是软件开发和问题排查中的重要工具。