gdb常用命令

启动gdb

1、gdb   直接运行gdb,后续输入 run 程序 参数 开启调试

2、gdb 程序  //以某个程序启动gdb,后续可通过set args 参数1 参数2..... 设置程序启动参数

再 run 开启调试(run简写 r)

3、gdb attach pid  添加正在运行的进程到gdb调试  然后输入continue 继续 (continue 简写 c)

kill 停止程序

quit 退出gdb //简写q

断点 (break 简写b)

info break           //查看断点 简写 i b

break 行号         //在当前行号出设置断点

break 文件名:行号    //在该文件行号处设置断点

break 函数名            //在该函数处设置断点 所有同名函数都会设置

break 类名:函数名    //在该类函数处设置断点 

break 文件名:函数名     //在该文件的该函数处设置断点

break +偏移量       //当前代码行处加上偏移行数的地方设置断点 

break -偏移量   

break 断点 条件     //条件断点 break main.cpp:5 if i==1

tbreak 断点            //临时断点

enable 断点编号    //启用断点

diable 断电编号     //禁用断点

delete          //删除所有断点

delete 编号  //删除某断点

执行

continue       //简写 c 继续执行直到下一个断点处

step             //简写 s  单步执行

next            //简写n 逐过程执行

finish          //跳出当前函数

jump 行号    //跳转到某行

jump 函数    //跳转到某个函数

where          //显示当前执行的代码行和函数

堆栈

backtrace        //简写bt  查看当前堆栈

bt num            //查看num个数的堆栈

frame              //显示当前帧

frame 栈帧号(bt显示最前面的某一帧编号)      //切换到栈帧号的栈  切换后可以查看当前的一些信息

frame 帧地址      //切换到该地址的帧

up 帧数量           //切换到上多少帧  单独的up 表示切换到上一帧 

down 帧数量       //切换到下多少帧  单独的down 表示切换到下一帧 

info frame           //查看当前帧信息

info frame 栈帧号   //查看栈帧号帧信息

源码

list            //查看当前源代码 简写 l

list 行号    //显示指定行号的代码

list 函数名     //显示指定函数代码

list 开始行,结束行     //显示区间diamagnetic

list 文件名:行号     //显示该文件行附近代码

list -       //往前显示

set listsize 数字     //指定显示代码的行数

show listsize          //查看当前显示代码行数

directory 目录        //添加目录到源代码搜索路径 directory可简写 dir

show directorys     //查看源代码搜索路径

变量

info args             //查看当前函数参数 简写 i args

info locals           //查看当前所有临时变量

print 变量名        //查看变量值  print简写p 

ptype 可选参数 变量      //查看变量类型

          参数: /r       以原始数据方式显示 不会代替typedef

                      /m     查看类时只显示成员变量

                      /M     查看类时只显示类方法 (默认选项)

                      /t       不打印类中的typedef

                      /o      打印结构体字段偏移量和大小

x   //查看内存 

多线程

info threads   //查看所有线程

thread id        //切换到id线程 切换线程后可以使用前面的命令查看当前线程的堆栈等信息

bread 断点 thread id    //设置id线程的断点

thread apply id 命令     //在id线程上执行命令(跨线程执行)多个线程可以写id1 id2 id3...,如果为所有线程执行命令 id写all,例:thread apply 2 bt //查看2号线程的堆栈 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值