Just Do It

gdb调试

生成可以用gdb调试的文件(编译时加上-g参数)例如:
gcc a.c b.c -o test -g
用gdb打开程序
gdb test

gdb中的命令(直接回车表示执行上一次输入的命令)
查看代码–list
使用:l [lines/function]其中lines为要显示的中间行号而不是开始行号,function为函数名
默认显示main函数对应文件的代码,如果需要显示其他文件的代码l后跟另一个文件中的函数或者使用l filename:lines/function
默认显示10行
show listsize可以查看
et listsize n更改为显示n行(一般用不到)

断点–breakpoints
在对应行或函数生成断点 b lines/function
查看现在的断点 i/info b

Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000555555554659 in main at args.c:9
2       breakpoint     keep y   0x0000555555554678 in main at args.c:13

删除断点 d/del( Num 参数Num为断点的编号,如果需要删除多个可使用d n1 n2 n3 …若需要删除编号连续的断点使用d n1-n2)
在不删除断点的情况下让断点无效(改变Enb的值)
失能断点 dis/disable Num(编号)
使能断点 ena/enable Num(编号)
设置条件断点b lines if var==num(当满足条件时停在断点(一般在循环中用))

set args 可指定运行时参数。例如set args 1 2
show args 查看运行时参数
r/run 运行程序直到碰到断点
n/next 执行一步
c/continue 继续执行直到碰到下一个断点
p/print [var] 显示指定变量的值
display [var]              设置想要跟踪的变量(每次执行后都会自动显示追踪变量的值)
undisplay [varnum]     取消对变量的跟踪(varnum为编号使用[i display]查看)
s/step 跳转进函数内部
finish 函数结束
start 停在代码第一行
q/quit 退出gdb

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注