gdb调试C/C++程序

gdb调试C/C++程序

参考:
http://blog.csdn.net/liigo/article/details/582231/
http://blog.csdn.net/haoel/article/details/2879/
https://www.cnblogs.com/mfryf/p/5390442.html
https://segmentfault.com/a/1190000003733061(较好)

调试前提

调试程序的前提是编译debug版的可执行文件。
g++ 下:加command参数-g
CMake生成Debug:SET(CMAKE_BUILD_TYPE "Debug")
例如:g++ main.cpp -o a.out -g即可生成可调式的程序a.out。

调试常用命令

指令 作用
file xx.cpp 打开xx.cpp文件
r 运行或重新运行程序
l [n] 列出n周围多行信息,n为空就是当前行周围的多行信息
b nb x.cpp:n 在n行处添加断点
s 单步执行,进入函数
n 单步执行,跳过函数
p value 输出value变量的值
watch value 监视某个变量
c 继续
q 退出调试
finish 如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish
until 结束当前循环
display value 程序停止时显示变量和表达时
pwd 显示当前工作目录
ptype class 显示一个数据结构(如一个结构或C++类)的内容

一般调试的步骤

file 找到相要调试的程序,l,寻址需要加断点的位置,b加断点,r运行,s或n执行,p,输出想看的值,q退出调试。

配合vscode调试

前面文章也有介绍vscode配合g++运行和调试。这里再说一遍:
点击添加配置,修改"program": "${workspaceFolder}/build/a.out", 配置调试文件的路径。

实例

p *(siftData2.h_data)@1输出动态数组的元素。
info breakpoints查看断点位置。
list,显示当前行后面的源程序。
list - ,显示当前行前面的源程序。

你可能感兴趣的:(gdb调试C/C++程序)