Linux gdb调试器

gdb的启动
--gdb 程序名 [corefile]
--corefile是可选的,但能增强gdb的调试能力
--强调:启动gdb必须在编译命里加上"-g"参数,"-g"一般写在遍历命令的靠前位置,例如--gcc -Wall -g -o hello.o -c hello.c

 

"-q"命令
--命令格式:gdb -q 执行程序
--不显示gdb版本信息

 

gdb命令集合
--直接运行调试命令 gdb 程序名
--"run"
  开始调试程序
--"where"
  显示导致段错误的执行函数树
--"list[m,n]"
  m,n是要显示包含错误首次出现位置的起始行和结尾行。不带参数的list命令将显示附近的10行代码
--"print"
   print 变量,表达式
   print 'filename'::变量或表达式    --''是必须的,以便让gdb知道指的是一个文件名。 
   print funcname::变量或表达式
--"whatis"
   告诉你变量的类型
--"ptype"
   告诉你结构的定义
--"break"
   设置断点
   break linenum(行号)
   break funcname(函数名)
   break filename:linenum
   break filename:funcname
--"continue"
   从断点以后继续执行,并非单步
--"delete"
   删除一个端点
   语法格式:delete 断点编号
   断点编号是由"info break"获取的
--"info break"
   查看已设置断点的信息
--"set variable"
   命令格式是:set variable varname=value
   varname是变量名称,value是变量的新值

 

gdb单步调试
--"step"
    当遇到一个函数的时候,step将进入函数,每次执行一条语句,相当于vs中的F10命令
--"next"
    当遇到一个函数的时候,next将执行整个函数,相当于vs中的F5命令
--"return "
    相当于在函数中直接return ,并且将value作为返回值返回给调用者。
--如果需要重复执行一条命令,不需要每次都键入命令,gdb记住了最后一个被执行的命令,只要简单的按
enter键就可以重复执行最后的命令

 

gdb调试带参数的程序
进入gdb调试界面
输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:
set args a.txt b.txt
回车后输入 run

 

gdb多文件调试
如果调试的文件不在当前目录下,需要将文件目录加载到程序中,如果在当前目录下不需要加载目录
--命令行    "DIR ../common"
在文件中添加断点
--命令行    "bread helper.c:68"    在helper.c文件的第68行加断点
跳出循环:
until LineNum  
执行到一个比当前行号大的行,或者也可以指定在当前frame中的某一行

跳出函数:
finish     
执行,直到选定的frame执行结束,然后打印返回值,将其放入历史值中,停止
gdb多线程调试
在多线程编程中,经常会遇到死锁问题,这时候需要使用pstack命令来查看线程在哪个函数中锁住了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值