ubuntu gdb调试第一次实验总结

ubuntu下将一个hello.c文件经过预编译(.i)、编译(.s)、汇编(.o)、链接到可执行文件hello.out的过程的命令行为:

gcc -E hello.c -o hello.i

gcc -S hello.i -o hello.s

gcc -c hello.s -o hello.o

gcc hello.o -o hello.out

运行:./hello.out

gdb : gdb hello.out 或 gdb -q(安静模式) hello.out


断点:
添加断点 : b 3(行号) 或b main(函数名) b 标号(_start+1)
查看所有断点信息: info reg breakpoints
删除断点 : delete breakpoint Num(Num为断点的序号,不是断点所在行号)

运行程序 :r(run)
下一步 :n(next) 或 s(step),执行到某个函数方法时,step可以跳进函数里面,next会直接跳过
退出当前循环 :finish

display : 设置程序中断后欲显示的数据和格式
常用的: : display /i $pc
($pc代表当前汇编指令,/i代表16进制,这条语句执行了,每次程序中断的时候都能看到即将执行的汇编指令)
display /d $eip:每次程序中断的时候都会以10进制打印出eip的值
undisplay <编号>: 取消前面的display设置,以后每次程序中断就不会显示使用display命令要求显示的值了


查看所有的寄存器: info reg
查看某个寄存器 : info reg eax(寄存器名),也可用print /d $eax(数据格式,d是十进制,$eax(寄存器))
查看标志寄存器 : print $eflags

查看变量a的值 : print a
查看变量a的地址 : print &a

查看内存 : x/5bt,查看5个字节(b),以二进制形式显示(t),x/5bx,x代表(16进制)显示,b也可换成w(4字节)或h(2字节)
: 计算机的内存是有尊严的,不是啥都让你随便访问
查看帮助 : help 如查看有关breakpoint的命令 help breakpoint

补全命令提示 : 连按2下Tab


窗口:
查看汇编窗口 : layout asm
代码和汇编窗口同时显示: layout split
退出窗口,回到传统模式下:Ctrl+x,再按a

查看源代码 :list
查看源代码n到m行:list n,m

设置list显示的m行:set listsize m

传统模式下: 显示当前目录下文件: ls 删除某个文件 : rm demo.c(删除demo.c文件)

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...