在linux下使用gdb调试程序,记录一下常用的调试命令:
#设置代码目录
directory /home/code/
#断点
info break => i b #查看断点
b vulkan/core/init.c:1723 #断文件行
delete 2 #删除编号为2的断点,简写 d 2
disable 3 #禁用编号为2的断点
diable #禁用所有断点
enable 3 #启用编号为3的断点
enable #启用所有断点
ignore 1 3 #设置断点1跳过3次
return x #设置当前函数返回值
break func1 if aa==10 #条件断点,当aa==10时断住func1函数
#设置显示信息
set print pretty on # 美化显示结构体
set print elements 1000 # 设置显示字符串长度,防止截断
set print union on # 显示联合体数据
set print vtbl on # 显示虚函数表
set print address on # 显示参数地址
set print array on # 打开数组显示,打开后当数组显示时,每个元素占一行
set print null-stop on # 显示字符串时,遇到结束符则停止显示
set print sevenbit-strings on # 设置字符显示,是否按“/nnn”的格式显示
show print pretty/union/vtbl/address
#查看内存数据
x/<n><f><u> <addr>
<n>:表示要查看几个内存单元
<f>:显示进制形式,x-16,d-10,u-16进制无符号整型,o-8,t-2,c-字符,f-浮点,s-字符串
<u>:内存单元大小,b-1字节,h-2字节,w-4字节,g-8字节
如x/20xb buf,表示按16进制显示buf开头的20个内存单元,每个内存单元大小是1字节
#跳过SIGPWR、SIGXCPU信号
handle SIGPWR nostop noprint
handle SIGXCPU nostop noprint