gdb工具常用命令

来源:互联网 发布:ubuntu samba用户名 编辑:程序博客网 时间:2024/06/04 18:17
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


显示所有的断点
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
原创粉丝点击