### GDB调试命令大全 #### 一、简介 GDB(GNU Debugger)是GNU项目下的一款强大的源代码级调试器,主要用于调试C/C++程序。本文档将详细介绍一系列GDB命令,帮助开发者更好地理解和掌握GDB的使用方法,提高调试效率。 #### 二、基础命令 1. **actions**: 用于配置或查看断点的动作。 2. **directory**: 设置搜索目录,例如用于查找源文件等。 3. **info**: 查看各种信息,如断点、线程、寄存器状态等。 4. **pwd**: 显示当前工作目录。 5. **symbol-file**: 加载符号表文件,帮助解析程序中的符号。 #### 三、高级命令 1. **add-shared-symbol-files**: 添加共享库的符号表。 2. **disable**: 禁用某个断点或所有断点。 3. **init-if-undefined**: 如果未定义则初始化环境。 4. **python**: 执行Python脚本,GDB支持Python扩展。 5. **target**: 指定调试目标。 #### 四、断点管理 1. **add-symbol-file**: 向程序添加符号文件。 2. **add-symbol-file-from-memory**: 从内存中加载符号文件。 3. **break**: 设置断点。 4. **tbreak**: 设置临时断点,只触发一次。 5. **rbreak**: 在函数入口处设置断点。 6. **delete**: 删除断点。 7. **enable**: 启用断点。 8. **ignore**: 忽略指定次数的断点触发。 9. **disable**: 禁用断点。 10. **commands**: 为断点设置动作。 11. **condition**: 设置断点条件。 12. **catch**: 设置异常捕获断点。 13. **tcatch**: 设置临时的异常捕获断点。 14. **watch**: 设置数据访问监视点。 #### 五、程序控制 1. **start**: 开始执行程序。 2. **continue**: 继续执行程序。 3. **step**: 单步执行,遇到子函数会进入子函数内部。 4. **next**: 单步执行,遇到子函数会跳过子函数。 5. **finish**: 执行直到当前函数返回。 6. **return**: 让当前函数立即返回。 7. **jump**: 直接跳转到指定地址执行。 8. **interrupt**: 中断正在执行的程序。 9. **kill**: 杀死被调试的程序。 10. **signal**: 发送信号给被调试的程序。 #### 六、内存与变量操作 1. **print**: 输出变量值。 2. **p/x**: 以十六进制形式输出变量。 3. **p/a**: 以ASCII码形式输出变量。 4. **ptype**: 显示变量类型。 5. **whatis**: 显示表达式的类型。 6. **display**: 显示变量的变化。 7. **undisplay**: 停止显示变量的变化。 8. **mem**: 查看内存内容。 9. **compare-sections**: 比较两个程序段的内容差异。 10. **load**: 将内存内容加载到变量中。 11. **store**: 将变量内容存储到内存中。 #### 七、堆栈与调用跟踪 1. **bt**: 显示当前函数调用堆栈。 2. **backtrace**: 同上,显示调用堆栈。 3. **up**: 上移一个栈帧。 4. **down**: 下移一个栈帧。 5. **select-frame**: 选择当前帧。 6. **where**: 显示当前函数的位置信息。 7. **frame**: 切换到指定的函数调用栈。 8. **list**: 显示源代码。 9. **nexti**: 单步执行指令,不进入函数体。 10. **stepi**: 单步执行指令,进入函数体。 #### 八、环境与设置 1. **set**: 设置GDB的各种选项。 2. **show**: 显示GDB的设置。 3. **unset**: 清除GDB的设置。 4. **shell**: 运行shell命令。 5. **cd**: 改变工作目录。 6. **exec-file**: 设置可执行文件。 7. **path**: 设置搜索路径。 8. **output**: 设置输出文件。 9. **environment**: 设置环境变量。 10. **maint**: 调试器维护命令。 #### 九、调试辅助工具 1. **apropos**: 搜索命令的帮助信息。 2. **help**: 显示帮助信息。 3. **alias**: 定义别名。 4. **define**: 定义自定义命令。 5. **macro**: 定义宏命令。 6. **save**: 保存设置。 7. **quit**: 退出GDB。 8. **version**: 显示版本信息。 9. **history**: 显示历史命令。 10. **set history save**: 保存历史命令。 #### 十、远程调试 1. **target remote**: 设置远程调试目标。 2. **remote**: 连接到远程调试服务器。 3. **attach**: 附加到正在运行的进程。 4. **detach**: 从进程分离。 5. **remote-tui**: 远程图形用户界面调试。 6. **target**: 设置调试目标。 #### 十一、其他命令 1. **search**: 在内存中搜索特定模式的数据。 2. **until**: 执行直到满足某个条件。 3. **undo**: 撤销最近的操作。 4. **info sharedlibrary**: 显示共享库的信息。 5. **info symbol**: 显示符号信息。 6. **info source**: 显示源文件信息。 7. **info functions**: 显示函数列表。 8. **info breakpoints**: 显示断点信息。 9. **info files**: 显示已加载的文件信息。 10. **info registers**: 显示寄存器信息。 11. **info threads**: 显示线程信息。 12. **info args**: 显示函数参数信息。 13. **info locals**: 显示局部变量信息。 14. **info globals**: 显示全局变量信息。 15. **info frame**: 显示当前栈帧信息。 16. **info line**: 显示行号信息。 17. **info targets**: 显示目标信息。 通过以上对GDB调试命令的详细介绍,可以帮助开发者更好地理解和掌握GDB的使用方法,从而在C/C++程序开发过程中高效地定位和解决问题。在实际应用中,结合具体的调试需求灵活运用这些命令,可以极大地提高调试效率。
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助