1.首先写一个.c文件:vi h.c
2.进行编译:gcc -g h.c -o h(使用gcc对其进行编译,-g表示编译时加入调试信息,-o是指定名称)
3.使用:gdb h 对其进行调试
5.gdb里面输入:q或者quit即可退出gdb
6.gdb -q h屏蔽上面信息
7.查看代码命令:list简称l
8.使用l 3,5表示查看第3到5行的代码
9.使用l 函数名表示查看某个函数的代码
10.l +表示往下翻动,l -表示往上翻动代码
11.使用disassemble简写disass查看汇编代码
使用TUI模式查看
1.gdb h -tui查看代码(其中h为gcc -g h.c -o h中的可执行程序)
注:没有直接跳到(gdb)而是出现paging--就得在paging后面加个m
2按上下键可以进行滚动,方便查看代码
3.Ctrl +x+2显示两个窗口
4.Ctrl +x+o激活另一个窗口,再按上下键就可以滚动窗口了
5.在调试时也可以使用layout命令打开TUI模式
layout src表示显示源代码窗口
layout asm表示显示汇编代码窗口
layout split同时显示这两个窗口
layout regs显示寄存器窗口
使用Ctrl+x+a可以进入(退出)这个模式
6.使用breakpoint简写为b可以设置一个断点
b 数字表示在第几行设置了断点
b 函数名表示在某个函数设置断点
断点实际上是针对汇编来说的
7.使用run简写r运行程序
8.使用next简写为n可以单步执行
9.使用print简写为p打印变量的值
p 变量名表示打印变量的值
p/t 变量名表示打印变量二进制打印
p &变量名表示打印变量的地址
p *地址表示打印地址的值
10.使用x表示查看内存的值
x/2uw 地址表示查看个两单位内存(按照u(无符号十进制)表示,每个单元4个字节(w))
x/1tb 地址表示显示1个单元内存(按照t(二进制)显示每个单位1字节(b))
11.使用step简写为s可以写入函数
12.使用ni可以在汇编代码单步执行
sub表示两数相减,test测试一方寄存器是否为空,但不改变操作数的值,jle表示小于等于则跳转,add表示两数相加,
13.使用watch 变量可以跟踪查看变量值
接着使用continue简写为c,当观察的值变化时会停下来
14.查看寄存器也可以用info registers命令,layout regs也可以查看
15.使用until直接执行完循环
16.使用finish简写为fin直接执行完函数