Linux环境下GDB调试C/C++代码常用命令详解
需积分: 4 170 浏览量
更新于2024-09-13
收藏 4KB TXT 举报
"这篇文章主要介绍了在Linux环境下使用GDB(GNU Debugger)进行C/C++程序调试的一些常用命令。GDB是一个强大的源代码级调试器,它可以帮助开发者在程序运行时检查变量状态、设置断点、单步执行代码等,从而找出并修复程序中的错误。以下是一些关键的GDB命令及其功能解释:"
1. **启动GDB**:
- `gdb [program]`:使用GDB并指定要调试的程序。
2. **列出源代码**:
- `(gdb) list`:列出当前文件的源代码,默认显示10行。
- `(gdb) list [line_number]`:列出指定行号附近的代码。
- `(gdb) list +[count]`:在当前行之后列出count行代码。
- `(gdb) list -[count]`:在当前行之前列出count行代码。
- `(gdb) list function_name`:列出函数function_name的定义。
3. **设置断点**:
- `(gdb) break line_number`:在指定行号设置断点。
- `(gdb) break function_name`:在函数function_name的入口处设置断点。
- `(gdb) info breakpoints`:查看所有断点的信息。
- `(gdb) delete breakpoints [number]`:删除指定编号的断点。
- `(gdb) disable breakpoints [number]`:禁用指定编号的断点。
- `(gdb) enable breakpoints [number]`:启用指定编号的断点。
4. **运行与控制程序**:
- `(gdb) run`:开始执行程序,直到遇到断点或程序结束。
- `(gdb) next`(n):执行下一行代码,如果当前行是函数调用,则会进入该函数内部。
- `(gdb) step`(s):同`next`,但当当前行是函数调用时,会单步执行函数内部的第一条语句。
- `(gdb) continue`(c):继续执行程序,直到遇到下一个断点或程序结束。
- `(gdb) until`:执行到下一次循环迭代结束或者当前函数返回。
5. **检查变量和内存**:
- `(gdb) print expression`(p):打印表达式的值。
- `(gdb) watch expression`:设置监视点,当表达式的值改变时暂停程序。
- `(gdb) display expression`:在每条命令执行后显示表达式的值。
6. **堆栈与回溯**:
- `(gdb) backtrace`(bt):显示调用堆栈,即函数调用的层次结构。
- `(gdb) finish`:执行到当前函数结束,然后返回到调用者。
7. **环境和程序状态**:
- `(gdb) set args arguments`:设置程序运行时的命令行参数。
- `(gdb) show args`:查看当前设置的命令行参数。
- `(gdb) show paths`:显示查找程序和库的路径。
- `(gdb) set environment variable[=value]`:设置环境变量。
- `(gdb) show environment [variable]`:查看环境变量。
8. **其他操作**:
- `(gdb) shell command`:在GDB内部执行shell命令。
- `(gdb) cd directory`:改变GDB的当前工作目录。
- `(gdb) pwd`:显示GDB的当前工作目录。
了解并熟练使用这些GDB命令,能有效提升在Linux环境下调试C/C++程序的效率,有助于快速定位和解决问题。
201 浏览量
178 浏览量
143 浏览量
390 浏览量
139 浏览量
123 浏览量
258 浏览量
320 浏览量
171 浏览量
猫头鹰之眼
- 粉丝: 4
- 资源: 20
最新资源
- Applied-ML-Algorithms:一个采用泰坦尼克号数据集并在scikit-learn和超参数调整中使用不同ML模型的ML项目
- Spring_2021
- Tolkien
- cot_tracker:交易者数据追踪器的承诺
- http-factory-diactoros:为Zend Diactoros实现的HTTP工厂
- 酒保:酒保-PostgreSQL备份和恢复管理器
- tpwriuzv.zip_归一化时域图
- TPF U13
- TicTaeToeOnline
- Large-scale Disk Failure Prediciton Dataset-数据集
- aim-high:用于设置和跟踪目标的应用
- c#飞机大战期末项目.rar
- Becross
- nrmgqpyn.zip_complex cepstrum
- 适用于Android NDK的功能强大的崩溃报告库。 签出后不要忘记运行git submodule update --init --recursive。-Android开发
- 弹跳旋转器::globe_with_meridians::bus_stop:一个显示弹跳旋转器的Web组件