首页 > 代码库 > gdb调试

gdb调试


gdb FILE 调试程序
gdb run  运行程序
gdb list 查看代码
break num 设置断点
breac function 
info b  查看断点
delete b  删除断点
break operator(函数名) 条件断点
step 单步
next 往下执行
finish 退出函数
info program 来查看程序的是否在运行,进程号,被暂停的原因
continue 继续运行程序,可简写为c
display varible 检查变量
print varible 打印变量
set varible = 改变数据
backtrace 检查堆栈
b file:num thread 5
info threads
until 在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体,可简写为u
thread num 指定线程 
set scheduler-locking on/off 锁定调度器来避开gdb根据优先权来改变当前线程
thread apply all 指定线程应用命令
attach  pid 挂接进程
dettach pid 脱离进程
watch 监控变量改变

set follow-fork-mode [parent|child]
parent: fork之后继续调试父进程,子进程不受影响。
child: fork之后调试子进程,父进程不受影响

set detach-on-fork [on|off]
on: 断开调试follow-fork-mode指定的进程。
off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态。

方法一:适合临时向文件输出些信息的情况。
比如要用info functions输出所有函数,结果往往有一大坨,所以可以将之输出到文件。
(gdb) set logging file <file name>
(gdb) set logging on
(gdb) info functions
(gdb) set logging off

方法二:适合整个gdb会话期间都重定向输出的情况。
gdb |tee newfile

show directories
查看源代码路径

dir dirname
将dirname加到代码搜索路径里面