目录
前提:程序必须是自己写的!!!
gdb ./xxx.out
基础指令
-g
使用该参数编译可执行文件,得到调试表。
list
列出源码。
list 1
或者
l 1
b
设置断点。
b 行号
b 20 //在20行设置断点
设置条件断点。
b 行号 条件
b 20 if i=5
run或者r
运行程序,可查找段错误的位置。
run
或者
r
设置传入main函数的参数。
run 参数值
run abc 123
next或者n
下一行代码,会跳过函数。
next
或者
n
step或者s
下一行代码,会进入函数。
step
或者
s
print或者p
查看变量的值。
print 变量名
print i
或者
p 变量名
p i
continue
继续执行断点后续代码。
quit
退出gdb当前调试。
其他指令
finish
结束当前函数调用。
finish
set args
设置传入main函数的参数。
set args 参数值
set args abc 123
info b
查看断点信息表。
info b
ptype
查看变量类型。
ptype 变量名
ptype i
bt
列出当前程序存在的栈帧,可查看栈帧编号。
bt
frame
切换栈帧。
frame 栈帧编号
frame 1
display
设置跟踪变量。
display 变量名
display i
undisplay
取消设置跟踪变量。
undisplay 变量的编号
undisplay 2
进程相关
使用gdb调试的时候,gdb只能跟踪一个进程。通过指令设置gdb调试工具跟踪父进程或者是跟踪子进程。默认跟踪父进程。 一定要在fork函数调用之前设置才有效。
设置跟踪子进程
set follow-fork-mode child
设置跟踪父进程
set follow-fork-mode parent