GDB常用指令

一、基本指令
编程设置:1.需要加-g,不能有-s,如g++ -g main.cpp
常用指令
(gdb)gdb e(或者输入gdb) (gdb)file e //进入gdb,执行e文件
(gdb)info breakpoints //可使用info查看断点相关的信息
(gdb)break 7 //以行号设置断点
(gdb)break function_name //以函数名设置断点
(gdb)clear 行号 //删除这行的断点
(gdb)clear 函数名 //删除该函数的断点
(gdb)delete breakpoints n //删除第n次(指定编号)设置的断点
(gdb)clear //删除程序中所有的基于行设置的断点
(gdb)delete //删除程序中所有的断点
(gdb)r //执行程序
(gdb)n //单步调试
(gdb)c //执行到下一个断点
(gdb)print 变量或表达式 //打印变量或表达式当前的值。
(gdb)print 变量=值 //对变量进行赋值
(gdb)whatis 变量或表达式 //显示变量类型
(gdb)set variable 变量=值 //变量赋值

二、断点管理
1.以行号设置断点
(gdb)break 7
(gdb)run
2.以函数名设置断点
(gdb)break function_name
(gdb)run
3.以条件表达式设置断点
(gdb)break 7 if i99
(gdb)run
4.另一种,以表达式设置断点的方法
(gdb)watch i
99
这个命令必须在变量i被定义之后才会成功运行,为了解决这个问题,首先在变量 i 被定义的后一行设置中断,然后使用run命令运行程序,程序暂停后就可以使用watch i==99设置断点了。
##############################
单步执行
(gdb)next
#############################
查看当前设置的断点信息
(gdb)info breakpoints
###############################
使中断失效(断点仍然存在)或有效
(gdb)info breakpoints
(gdb)disable b_id //使中断失效,b_id 为中断编号
(gdb)info breakpoints
(gdb)enable b_id //使中断有效,b_id 为中断编号
(gdb)info breakpoints
##############################
删除断点
clear : 删除程序中所有的断点
clear 行号 : 删除这行的断点
clear 函数名 : 删除该函数的断点
delete b_id1 b_id2 … : 删除指定编号的断点
##################################
查看和设置变量值
1.print命令
print 变量或表达式:打印变量或表达式当前的值。
print 变量=值:对变量进行赋值。
print 表达式@要打印的值的个数n:打印以表达式开始的n个数
2.whatis命令:显示某个变量或表达式值的数据类型
whatis 变量或表达式
例子:

3.set命令:给变量赋值
set variable 变量=值
【提示】set命令还可以针对远程调试进行设置,可以用来设置gdb一行的字符数等。

4.多线程

查看线程的一些信息
1.查看进程:info inferiors
2.查看线程:info threads
3.查看线程栈结构:bt
4.切换线程:thread n(n代表第几个线程)
5.只运行当前进程:set scheduler-locking on
6.所有线程并行:set scheduler-locking off
7.切换线程 :thread ID(1,2,3)
8.thread apply all command :让所有线程执行命令command(比如thread apply all bt)
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值