GDB调试指南:从安装到断点使用

需积分: 19 1 下载量 124 浏览量 更新于2024-07-28 收藏 494KB PDF 举报
"GDB调试说明文档 - SeaSon from DB-LAB of HIT" 本文将详细介绍如何使用GDB(GNU Debugger)进行程序调试,特别是在Cygwin环境下。GDB是一款强大的源代码级调试器,广泛用于Linux和类Unix系统,也可以在Cygwin这种Windows上的模拟环境使用。 ### 安装GDB 1. **安装Cygwin**:确保已经安装了Cygwin,如果没有,你需要先下载并运行Cygwin的setup文件。在安装过程中,选择"Keep"选项,这能保留已有的软件包,避免覆盖已有的配置。 2. **添加GDB组件**:在Cygwin的安装列表中找到并选择GDB组件,然后进行安装。 3. **安装Tcl/Tk库**(可选):如果你希望使用图形界面的调试工具Insight,需要在安装过程中安装Tcl/Tk库。对于较新的Cygwin版本,Insight通常是默认安装的。 ### 修改Makefile以添加调试信息 1. **编辑Makefile**:找到项目根目录下的无后缀的Makefile文件,通常不是Makefile.vc或Makefile.in。 2. **添加-g标志**:在`CCOPT`变量后面添加`-g`标志,这允许编译器生成包含调试信息的可执行文件。 ### 重新编译项目 1. **清理旧的编译结果**:在ns-2.2*目录下执行`make clean`,清除之前编译的文件。 2. **生成依赖关系**:执行`makedepend`命令,这将创建编译所需的依赖关系。 3. **重新编译**:最后执行`make`命令,编译项目。如果一切顺利,GDB就准备好了。 ### 使用GDB调试 1. **启动GDB**:在Cygwin或Xwin窗口中输入`gdb ns`启动GDB,并加载你的程序(在这里是名为`ns`的可执行文件)。 2. **设置断点**:使用`b file.cc:112`命令在指定文件的指定行设置断点。例如,`b aodv.cc:112`会在aodv.cc的第112行设置断点。GDB支持多种设置断点的格式,具体可查阅GDB手册。 3. **删除断点**:使用`db [编号]`命令删除断点,例如`db 2`会删除编号为2的断点。 4. **运行脚本**:使用`r script.tcl`命令运行脚本,`r`代表运行,`script.tcl`是你要执行的TCL脚本。 5. **查看变量或函数值**:使用`display var`命令显示变量或函数的值。例如,若想在recv()函数的断点处查看数据包的源地址,你可以输入`display packet.src`。 ### 示例 1. 在recv()函数开始处设置断点。 2. 运行`r wireless1.tcl`来执行测试脚本`wireless1.tcl`。 3. 当程序到达断点时,它会暂停,此时你可以查看变量的值,例如`display packet.src`来查看数据包的源地址。 通过熟练掌握这些基本操作,你可以在GDB中有效地定位和解决问题,无论是简单的语法错误还是复杂的逻辑问题。对于更高级的调试技巧,如单步执行、条件断点、监控内存变化等,都可以通过查阅GDB手册或在线教程来学习。