### GDB 快速参考知识点解析 #### GDB简介 GDB(GNU调试器)是GNU项目中的一个强大且功能全面的程序调试工具,适用于多种操作系统及编程语言。它可以帮助开发者在开发过程中发现并修正代码错误,从而提高软件质量。 #### 基本命令与用法 **启动GDB** - **gdb**: 启动GDB,此时不会加载任何调试文件。 - **gdb program**: 开始调试指定的`program`。 - **gdb program core**: 调试由`program`产生的核心转储文件`core`。 - **gdb --help**: 显示GDB的命令行选项帮助信息。 **基本操作命令** - **run [arglist]**: 运行被调试程序,并可以传递参数列表`arglist`。 - **run**: 运行被调试程序,使用上次运行时的参数列表。 - **run … < inf > outf**: 运行被调试程序,重定向标准输入到文件`inf`,标准输出到文件`outf`。 - **kill**: 终止正在运行的被调试程序。 - **tty dev**: 设置下一次运行时的标准输入和输出设备为`dev`。 - **set args arglist**: 设置下次运行时使用的参数列表为`arglist`。 - **set args**: 清空下次运行时使用的参数列表。 - **show args**: 显示当前设置的参数列表。 - **show env vars**: 显示所有环境变量。 - **show env var**: 显示环境变量`var`的值。 - **set env var string**: 设置环境变量`var`的值为`string`。 - **unset env var**: 删除环境变量`var`。 **调试命令** - **bt**: 显示程序的调用栈,即回溯跟踪。 - **p expr**: 显示表达式`expr`的值。 - **c**: 继续执行程序直到下一个断点或程序正常结束。 - **n**: 执行下一行源代码,遇到函数调用时不进入函数内部。 - **s**: 执行下一行源代码,遇到函数调用时进入函数内部。 #### 获取帮助 - **help**: 列出所有命令类别。 - **help class**: 显示类别`class`下的命令及其简短描述。 - **help command**: 显示命令`command`的详细说明。 - **help java**: 列出Java和JVM调试命令。 - **javalist**: 列出Java子命令。 #### Shell命令 - **cd dir**: 改变工作目录到`dir`。 - **pwd**: 显示当前工作目录。 - **make …**: 调用`make`命令。 - **shell cmd**: 执行任意Shell命令`cmd`。 #### 断点和监视点 - **break [file:]line**: 在指定文件的第`line`行设置断点。 - **b [file:]line**: 等同于`break [file:]line`。 - **break [file:]func**: 在指定文件的函数`func`处设置断点。 - **break + offset**: 在当前位置向下`offset`行处设置断点。 - **break * addr**: 在地址`addr`处设置断点。 - **break**: 在下一条指令处设置断点。 - **break … if expr**: 如果条件表达式`expr`非零,则设置断点。 - **cond n [expr]**: 对断点`n`设置条件表达式`expr`;若无表达式则移除条件使断点变为无条件。 - **tbreak …**: 设置临时断点,达到后自动禁用。 - **rbreak regex**: 在所有匹配正则表达式`regex`的函数上设置断点。 - **watch expr**: 在表达式`expr`的值发生变化时设置监视点。 #### 小结 通过以上介绍,我们可以看到GDB提供了一系列丰富的命令用于程序的调试。从启动、基本操作、获取帮助、Shell命令到断点和监视点的设置,几乎涵盖了所有常用的调试需求。熟练掌握这些命令能够极大地提升调试效率,帮助开发者更快地定位问题所在。无论是初学者还是经验丰富的开发者,在日常工作中都能从中受益匪浅。
- edger2heaven2017-11-15it's useful,thanks.
- 粉丝: 15
- 资源: 126
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助