以前的时候,有过在Window下调试过java的经历,不过只是些javac java而已。
现在打算学习linux网络编程方面的东西,关于调试,有了些与以往不同的感觉。
1.在使用GDB调试时,编译命令需要加入-g选项,产生test。
gcc -o test source.c -g//产生test
2.调试加载程序test
gdb test
进入gdb后,也可以使用file test 加载程序
3,设置输入参数 set args
main函数入口的args 和argv的参数
ps: args 和argv参数有些熟视无睹的意味了,今天有些明白: args 是参数个数,猜想默认就是1
如果需要输入参数1个,则args为2,且argv[1]是所存数据,而不是argv【0】;
set args X
4.列出源代码至屏幕上 list
list 几乎是每十行列出一次代码,然后按enter继续
列举10至15代码,需要命令 list 10,15
本人试了一下 list 10不仅仅是列举出第十行代码,而是其前后的代码都被list出来。
5断点
break x x代表某一行或某一个函数名
有条件地使用断点
break xx if(iii)
满足条件才会执行断点
查看当前设置的所以断点
info break
删除指定断点 delete break X,x代表某一个断点的序号
禁用断点
disable break x
允许断点
enable break x
清除断点
clear line line是指定的行数
6 Debug开始 run
run x,x可以为命令行参数,也可以不使用
ps: 关于以下提到的变量查看,c,n等需要run执行后才可以使用。
7变量查看
print 和display
print 是打印当前的变量值(只此一次),display 是在调试过程中一旦display某个变量,如果在当前调试行,变量在其作用域内,则变量的值会被显示出来。
print xx display xx,xx为变量的名字
8.调试移进命令
c(continue) n(next) s(step) finish
c是沿着断点继续执行,n是单步执行,s是如果该行有函数,进入函数体内,finish 从函数体内出来。
9.help xx,xx为命令。此命令用于查看使用命令的说明
10 退出gdb q