ubuntu gdb调试第一次实验总结

    xiaoxiao2021-03-25  64

    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://ju.6miu.com/read-33704.html

    最新回复(0)