### GDB 快速参考指南 #### 概述 GDB(GNU调试器)是一款功能强大的开源调试工具,用于调试C、C++等程序语言编写的程序。它可以帮助开发者找到程序中的错误并进行修复,是软件开发过程中不可或缺的工具之一。本篇快速参考卡片旨在提供GDB的基本命令和常用功能介绍,方便用户快速查阅与使用。 #### 基本命令 ##### 启动 GDB - **`gdb`**:启动GDB,不加载任何调试文件。 - **`gdb program`**:开始调试指定的程序。 - **`gdb program core`**:调试由 `program` 产生的核心转储文件 `core`。 - **`gdb --help`**:列出GDB的命令行选项说明。 ##### 执行程序 - **`run [arglist]`**:启动程序,可选地传递参数列表。 - **`run < inf outf`**:启动程序,并将输入重定向到 `inf` 文件,输出重定向到 `outf` 文件。 - **`kill`**:杀死当前正在运行的程序。 - **`tty dev`**:设置下一个运行命令时的标准输入输出设备为 `dev`。 - **`set args arglist`**:设置下次运行时的参数列表。 - **`set args`**:设置空的参数列表。 - **`show args`**:显示当前的参数列表。 - **`show env`**:显示所有的环境变量。 - **`show env var`**:显示特定环境变量 `var` 的值。 - **`set env var string`**:设置环境变量 `var` 的值为 `string`。 - **`unset env var`**:从环境中移除变量 `var`。 ##### 控制程序执行 - **`continue` 或 `c`**:继续执行程序。 - **`next` 或 `n`**:执行下一行代码,如果遇到函数调用则跳过该函数的执行。 - **`step` 或 `s`**:执行下一行代码,如果遇到函数调用则进入该函数内部。 ##### 查看程序状态 - **`backtrace` 或 `bt`**:显示程序的调用栈。 - **`print expr` 或 `p expr`**:显示表达式 `expr` 的值。 ##### 断点与监视点 - **`break [file:]line` 或 `b [file:]line`**:在文件 `file` 的第 `line` 行设置断点。 - **`break [file:]func` 或 `b [file:]func`**:在函数 `func` 开始处设置断点。 - **`break +offset` 或 `break -offset`**:在当前位置向前或向后 `offset` 行设置断点。 - **`break *addr`**:在地址 `addr` 处设置断点。 - **`break`**:在下一条指令处设置断点。 - **`break if expr`**:条件性地设置断点,当表达式 `expr` 的值为非零时触发断点。 - **`tbreak`**:临时断点,触发一次后自动失效。 - **`rbreak regex`**:在所有匹配正则表达式 `regex` 的函数处设置断点。 - **`watch expr`**:设置一个监视点,在表达式 `expr` 的值发生改变时触发。 #### 获取帮助 - **`help`**:列出所有命令类别。 - **`help class`**:列出某类别的所有命令,并给出简短说明。 - **`help command`**:获取某个具体命令的帮助信息。 #### 其他功能 - **`shell cmd`**:执行任意的 shell 命令 `cmd`。 - **`cd dir`**:切换工作目录到 `dir`。 - **`pwd`**:显示当前工作目录。 - **`make`**:调用 `make` 工具进行构建。 #### 结束 GDB - **`quit`** 或 `q` 或 **`EOF (Ctrl+D)`**:退出 GDB。 - **`interrupt (Ctrl+C)`**:中断当前命令或发送信号给正在运行的进程。 ### 使用技巧与注意事项 1. **断点管理**:可以使用 `info breakpoints` 命令来查看所有已设置的断点,使用 `clear` 或 `cl` 命令来清除断点。 2. **条件断点**:使用 `break if expr` 可以根据条件设置断点,这样可以在满足特定条件时才停止程序执行,非常有用。 3. **监视点**:通过 `watch expr` 设置监视点,可以在表达式的值发生变化时停止程序执行,这对于调试某些特定的数据结构或算法非常有帮助。 4. **调试多线程程序**:对于多线程程序,可以使用 `thread` 相关命令来控制和查看各个线程的状态。 5. **利用 `help` 命令**:当不确定某个命令的具体用法时,可以使用 `help command` 来获取详细帮助信息。 以上是GDB的一些基本命令和使用技巧,掌握了这些知识后,您就可以有效地使用GDB进行程序调试了。希望这份快速参考卡片能对您的工作有所帮助。
- 粉丝: 8
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助