前言
我们在使用gdb进行调试的时候,前提是我们对于源码已经比较熟悉了。它跟我们玩破解使用OD调试软件还是有些不一样的。好了,开始我们GDB的学习吧。
基本命令
-
使用gdb:想要使用gdb进行调试,必须编译的时候要加-g的参数。
-
启动gdb:gdb app(对应可执行程序名)
-
r(un)启动:代表是我们的程序运行起来
-
start 启动:使之停留在main函数,分步调试
-
n(ext):下一条指令,代表单步步过
-
s(tep):下一条指令,代表单步步入
-
q(uti) :退出gdb
-
设置启动参数 set args 1 2
设置断点
-
b行号:主函数所在文件的行
-
b 函数名:对此函数设置断点
-
b 文件名:行号:对所在文件对应行号设置断点
-
设置条件断点: b line if i == 1(i代表C语言中的变量)
-
l(ist):查看代码,默认显示10行
-
l 文件名:行号:查看行号所在周围的代码
-
del:删除断点
-
info breakpoints:得到断点编号,此时就可以使用del进行删除断点
-
c(ontinue):跳到下一断点
-
p(rint):打印变量的值
-
ptype:打印变量的值
设置变量的值
-
set argc = 5
-
set argv[1] = “Little”
-
set argv[2] = “Fish”
-
display:显示变量的值,用于追踪,查看变量具体什么时候变化
-
undisplay:删除显示变量,查看编号,info display
我们还可以使用gdb跟踪core文件,但是要使用ulimit -c来设置core文件的大小,通常我们可以使用ulimit -c unlimited.当然我们还可以设置core名称,直接vim /proc/sys/kernel/core_pattern即可。通常这个文件我设置为core-%e-%t。(%e代表添加命令名,%t代表添加core文件生成时的unix时间)