菜鸟笔记
提升您的技术认知

gdb的使用-ag真人游戏

gdb的使用

  • 1.进入gdb
  • 2.list/l 行号
  • 2.r
  • 3.break/b 行号
  • 4.info break
  • 5.delete breakpoints
  • 6.disable breakpoints 和enable breakpoints
  • 7.n或next
  • 8.s或step
  • 9.display和undisplay
  • 10.until 行号
  • 11.finish
  • 12.continue(c)
  • 13.set var
  • 14.bt
  • 15.p 变量

程序的发布方式有两种,debug模式和release模式

在linux下也是同样的,但是在linux gcc/g 出来的二进制程序,默认是release模式,因此要使用linux下的gdb调试,则必须在源代码生成二进制程序的时候,加上-g选项

大家仔细看,release和debug的大小不一样,debug版本的更大,他其中包含了很多调试信息,可以使用readelf -s 文件名 | grep -i debug来查看有哪些调试信息

上图为进入gdb的样子


list和l都是可以使用的,在后面还可以加上行号,也可以一直回车,接着上次的位置往下列,每次列10行

也可以使用 l 函数名 来列出某个函数的源代码

r是运行程序开始调试,相等于vs下的f5,其实他更适合跟后面要讲的断点相配合使用

因为没有断点,所以说直接运行出了结果

break是在某一行设置断点

后面也可以加的是函数名
也可以 break 是文件名:函数

info break是用来查看断点信息的

删除所有断点

delete breakpoints n:删除序号为n的断点
注意:一定是序号

其实本质上好多命令都是可以缩写的,就像删除断点,可以是 d 序号

disable breakpoints:禁用断点
enable breakpoints:启用断点
禁用断点后,运行时不会用到这个断点

n是指的是逐过程,相当于vs下的f10

s或step:逐语句,相等于vs下的f11

display:长显示,跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪

until 行号:在函数内,进行指定位置跳转,执行完区间代码

finish:进入一个函数,只执行完该函数,就停下来

continue(c):从一个断点处,直接运行至下一个断点处

set var n=xxx:设置某一个变量是特定的值

查看调用堆栈

p 变量:打印变量值

网站地图