Loading... 今天简单的学习了一下gdb的用法,现将一些常用操作记录下来。 调试前,要注意利用gcc编译源代码时,需要指定-g选项,以便产生带有调试信息的目标代码。 最常用的几个命令如下所示: | 命令 | 命令缩写 | 功能 | | -------------- | ---------- | ------------------------------------------------ | | list | l | 显示源代码 | | break | b | 设置断点 | | run | r | 开始运行 | | display | disp | 查看变量的值 | | watch | | 监视变量的变化 | | step | s | 单步运行,进入子函数 | | next | n | 单步运行,跳过子函数 | | continue | c | 继续运行至断点 | | file | | 选择需要调试的程序 | | quit | q | 退出gdb | | p *array@len | | 查看数组,array是数组首元素指针,len是数组长度 | gdb的使用步骤如下: 1. 编译源代码 ```bash hljs gcc test.cpp -g -o test -lstdc++ ``` 2. 进入调试环境 ```bash hljs gdb test ``` 或 ```bash hljs gdb file test ``` 3. 查看源代码 ```bash hljs # 默认从起始位置显示10行代码 list # 显示以第n行为中心的10行代码 list n # 显示以functionname函数为中心的10行代码 list functionname # 显示未显示的前面的代码 list - ``` ![](http://blog.lxalxy.com/usr/uploads/2021/03/382456353.png) 4. 设置断点 ```bash hljs # 设置断点在第n行 break n ``` 5. 运行程序 ```bash hljs # 全速运行 run ``` 6. 查看变量的值 ```bash hljs # 查看变量varName的值 display varName ``` 7. 单步运行 ```bash hljs # 进入子函数,即Step in step # 跳过子函数,即Step over next ``` 8. 查看数组的值 ```bash hljs # 查看首元素指针为array,长度为len的数组的值 p *array@len # 一直显示数组的值 display *array@len ``` ![](http://blog.lxalxy.com/usr/uploads/2021/03/2957874807.png) © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏