1. 常用的gdb命令
1)显示代码 - list
list 显示10行代码
list 1 显示1-10行,再键入list或者回车,显示下面10行代码
list 1,20 显示1-20行
2)设置断点 - break
break 15 在第15行设置断点
break func 在函数func()入口设置断点
info break 显示断点信息
delete 1 删除断点
3)
单步执行 - next/n
单步跟踪 - step/s
s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
n: 执行一行源程序代码,此行代码中的函数调用也一并执行。
继续运行 - continue
4)打印变量值 - print
print a
5)查看函数堆栈 - backtrace/bt
bt n 显示栈顶n桢(frame)
bt -n 显示栈底n桢(frame)
frame n 显示第n帧的信息
info args 查看某函数栈框里面参数名及值
info locals 查看某函数栈框里面局部变量的值
退出函数 - finish
退出gdb - quit
2. 用gdb来理解:值传递/指针传递/引用传递
https://www.cnblogs.com/zjutzz/p/6818799.html
总结:
void myfun(int a) //传值,产生复制 void myfun(int& a) //传引用,不产生复制 void myfun(int* a) //传地址,产生复制,本质上是一种传值,这个值是地址