gdb的确是个很强大的东西啊,这里记录一下gdb的基本操作吧
后续可能会补充,但暂时感觉够用了就不写多了。
首先是ubuntu终端的2个最基本的操作:(不然会gdb但是调不出终端也没用啊!)
1,cd xxxx 进入xxxx目录
2,Ctrl + Alt + T 调出终端
3,l 列出目录里有哪些文件 & 文件夹
接下来就是gdb了。
前提:编译时加上 -g 选项
比如g++ P1000.cpp -g -Wall -Wextra -o work
(在末尾加-O2可以开O2)
1,gdb work 调试work
2,gdb 进入gdb界面
3,file 进入gdb界面后可以切换调试的程序,
比如我先
gdb work -----> 现在在调试work
file work1 -----> 切换到调试work1
4,l 列出10行程序给你看
5,r运行程序
6,b xxx 在xxx行设置断点/在xxx函数设置断点
7,disp xxx 可以一直查看xxx变量(表达式),使用了之后xxx就会一直挂在上面,很方便
8,d 删除所有断点
9,undisp 1 删除第一个disp 的变量(就是disp之后变量前面那个数字)
10,undisp 删除所有disp 的变量
11,s 进入函数 + 执行下一步
12,n 不进入函数 + 执行下一步
13,watch xxx 监控xxx,如果xxx发生变化,程序将会停下并告诉了发生了哪些变化
14,call 函数名 强制执行某个函数(需要正在运行)
偷偷记录一些其他命令:
1,ulimit -s 查看栈空间大小
2,ulimit -s xxx 将栈空间设置为xxx