一 gdb常用操作
1 list(简写 l): 查看源程序代码,默认显示10行,按回车键继续看余下的。
2 print命令的简写形式为p,使用它打印出变量的值。
3 执行“bt”看一下调用栈
调用main()函数
4 b 打断点
5 n 执行下一步 c 程序继续运行
6 info b 查看断点信息
7 layout src 图像化界面,查看源代码
8 u 行数。执行至程序的特定的行。u为until
缩写
9 finish,简写fin,执行完某一个函数,并返回函数的执行结果
10 disable [断点标号] 使断点无效
11 able [断点标号] 使断点恢复
break 16 <----------- 设置断点,在源程序第16行处
break func <----------- 设置断点,在函数func()入口处
info break <----------- 查看断点信息。
r <----------- 运行程序,run命令简写
n <----------- 单条语句执行,next命令简写
c <----------- 继续运行程序,continue命令简写
p i <----------- 打印变量i的值,print命令简写
bt <----------- 查看函数堆栈
q <----------- 退出gdb
break *address <----------- 在程序运行的内存地址处停住
delete n <----------- 清除n号断点
x/<n/f/u> <addr> <----------- 查看内存
eg: x/100uh 0x54320:从0x54320读取内容,h双字节为一个单位,100表示3个单位,u
ctrl+c <----------- 暂停
si/ni <----------- 单步运行
info registers/b <----------- 查看当前寄存器和断点
display /20i $pc <----------- 查看当前执行及后20行汇编指令
layout split
layout regs
layout asm
print /x var 16进制显示(var)值
print可以指定显示的格式,这里用'/x'表示16进制的格式。
可以支持的变量显示格式有:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
print x=4 修改运行时候的变量值
layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
layout src:显示源代码窗口
layout asm:显示汇编窗口
layout regs:显示源代码/汇编和寄存器窗口
layout split:显示源代码和汇编窗口
layout next:显示下一个layout
layout prev:显示上一个layout
Ctrl + L:刷新窗口
Ctrl + x,再按1:单窗口模式,显示一个窗口
Ctrl + x,再按2:双窗口模式,显示两个窗口
Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。
二 gdb调试线程命令
gdb调试Qemu命令
gdb --args qemu-system-x86_64 -enable-kvm -m 1024 -hda /home/qemu/Qemu/vm/ubuntu1010.img -usbdevice tablet
参考链接
- [gdb调试命令]https://www.bbsmax.com/A/MyJxOP2Mzn/