GDB调试命令总结

1.调试命令:

sudo gdb -p 工作进程的pid                 #查看工作进程的pid
sudo gdb -tui -p 工作进程的pid			#跟踪该pid的worker进程,可以加-tui可视化
list/l								    #从第1行列出源码
list 函数                                #跳转到想要调试的函数
list 行号					  			#打印附近代码
b/break 设置断点 					    #设断点
info break                              #查看断点信息
d/delete 断点							#删除断点
c										#继续运行,触发断点
n/next  								#单条语句执行,不进入函数内部
s/step									#进入函数内部
start									#单步执行,运行程序,停在第一执行语句
p i										#打印变量i的值
finish 									#退出函数
q										#退出gdb
r										#重新开始运行文件
bt/backtrace							#查看当前调用堆栈
qcdmy									#查看当前栈中的所有信息
bt n									#显示栈顶几个层的信息
bt -n 									#显示栈底几个层的信息
f/frame 数字								#切换到第几个堆栈,0开始,0表示栈顶,1表示栈第二层
up n 									#向栈的上面移动n层,不打n,表示向上移动一层
down n 									#向栈的下面移动n层,不打n,表示向下移动一层
info f									#会打印出更为详细的当前栈层的信息
set print pretty on						#格式化输出样式,可以输出漂亮的结构体
layout									#用于分割窗口,可以一边查看代码,一边测试
display									#跟踪特定变量值
undisplay								#取消追踪观察变量
watch									#被设置观察点的变量发生修改时,打印显示
i watch									#显示观察点
set										#设置变量的值

2.break命令:

break 函数名 :在进入指定函数时设置中断点
break 文件名:函数名  : 设置指定文件中的相应函数为断点
break 行数:按照行数设置断点
break 文件名:行号 : 将指定文件的指定行数设置为断点
break *address :在程序正在运行的指定地址发出断点
break /- offeset :在当前行之前或之后中断点

break . if condition :在处理特定循环体时,可以使用此方法进行调试。 其中…是上述break lineNumber、break /-offset的参数。 其中,condition表示条件,是条件成立的时间
按顺序停止。 例如,如果设置break if i=100,则程序在I为100时停止。

3.print命令:

 ① 用于打印变量值,print可以输出很多类型的变量:全局变量,静态全局变量,局部变量,如果你的局部变量和全局变量发生冲突(也就是重名),一般情况下是局部变量会隐藏全局变量。
 ② 输出格式:
x 十六进制
d 十进制
u 十六进制无符号数
o 八进制
t 二进制
c 字符格式
f 浮点数格式
③ 查看变量值:
p "文件名"::全局变量        #查看相应文件中全局变量的值
p *数组的首地址@数据长度     #查看数组指定长度的值
p 数组名                   #查看数组值
info registers            #所有寄存器的值
p $寄存器				  #查看指定寄存器的值

4.layout命令:

layout用于分割窗口,可以一边查看代码,一边测试。

layout src :显示源代码窗口
layout asm :显示汇编窗口
layout regs :显示源代码/汇编和寄存器窗口
layout split : 显示源代码和汇编窗口
layout next :显示下一个layout
layout prev :显示上一个layout

文章引用:如何调试大型 Linux C/C++ 项目? - CharyGao - 博客园

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值