gdb工具常用命令

gdb下调试程序:
编译时加“-g”,否则无调试信息
set args 给main函数设置参数值;
show args 启动后查看设置的参数
show environment [varname]查看环境变量([varname]表示可选项,不写则显示全部的环境变量)
set environment varname [=] value 修改环境变量
run > outfile 将输出重定向到文件
info proc status/all 查看程序的状态信息,包含函数地址,进程号,线程等等


调试多线程:
info threads 列出所有的线程信息
依次列出的内容为:线程号,线程ID,堆栈信息,其中"*"所在行为当前gdb所在线程
thread threadno 切换线程


设置断点:
break(b) linenum  在某行设置断点
break filename:linenum 在某个文件某行设置断点
break function(class::function)在某个函数名(或类里的方法名)设置断点,(function表示函数名)


清除断点:
clear function
clear line (根据断点行号来清除)
delete line (根据断点的num来清除,使用info breakpoint可以查看所有断点信息)

delete break (清除所有断点)


显示所有的断点
info breakpoint


执行:
step conut   执行到某行(也可用来进入某个函数内部)
next    按步往下执行
finish  执行完当前函数


查看堆栈信息:
backtrace(bt)打印当前函数调用栈的信息
backtrace n   (n>0)表示只打印栈顶上n层的调用栈的信息
(n<0)表示只打印栈底下n层调用栈的信息
说明:一般来说,最顶层的栈就是当前栈,0表示栈顶,1就是栈的第二层。如果想看栈下面详细信息就切换当前栈。


切换堆栈:
frame n (或f n)切换到某一层堆栈,n是一个从0开始的整数,是栈中的层编号。比如:frame 0,表示栈顶,frame 1,表示栈的第二层。


frame addr(栈地址) 
up n 表示向栈的上面移动n层
down n   表示向栈的下面移动n层 不写n值,表示移动一层


查看当前栈的详细信息:
frame 或f 会显示当前函数名,函数参数值,函数所在文件及行号,函数执行到的语句
info frame(或info f) 会显示出更为详细的信息 
info frame n 显示某层栈的详信息

info args 查看新参栈信息
info locals 查看当前栈变量信息


查看源文件:
list linenum
list function
list first,last


查看数据:
print varname   打印变量值
print /x varname  按照16进制打印结果
/o 8进制输出结果
/f float输出结果


修改运行程序的值
set var varname = value   设置varname的值为value


查看命令历史记录
show history
show commands

 

gdb基本命令概述:

backtrace(bt): 查看堆栈情况

finish: 执行完当前函数,等待下个命令

list 行号:列出源代码

next: 执行下一句语句

print: 打印表达式值

set var: 修改变量的值

start: 开始执行程序,并在main函数的第一个语句等待命令与run不同,run不会等待

step: 执行下一行语句,如果执行函数,那么跳到函数里执行

break 行号:设置断点

continue: 从当前位置开始连续执行,直到遇到断点停下,否则执行完

disable breakpoint : 禁用所有断点

enable breakpoint: 启用所有断点

display 变量名:跟踪一个标量,每次停下来都会显示它的值

undisplay : 取消先前设置跟踪的那些变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值