微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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文件)

原文地址:https://www.jb51.cc/ubuntu/353650.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐