gdb 调试 c 程序

GDB debug
  • - <PID> debug对就进程号的运行中的程序
  • -q (quiet) 不打印一些详细的相关信息 或 --silent

  • list(l) 查看程序
  • break(b) 函数名 / 行号 / 文件名:行号 / 行号 if 条件
  • info registers 寄存器的当前值
  • p $esp 显示单个寄存器值
  • f 0 查看栈帧
  • layout 在新的窗口显示同步的调试代码
  • s(tep) step in 单步
  • n(ext) step over 单行调试
  • r(un) 运行到断点处
  • c 继续运行到下一个断点
  • start 开始执行程序,停在main函数第一行语句前面等待命令
  • disas(disassemble) addr 查看addr处前后的反汇编代码(disas main 查看main函数的反汇编)
  • si 单步调试汇编代码
  • ni 单行调试汇编代码
  • set $pc = 0x8048394 可以跳转


    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    关闭显示框


    在这里插入图片描述

gdb查看指定地址的内存地址的值:examine 简写 x



x/<n/f/u> <addr>


n:是正整数,表示需要显示的内存单元的个数,即从当前地址向后显示n个内存单元的内容,
一个内存单元的大小由第三个参数u定义。

f:表示addr指向的内存内容的输出格式,s对应输出字符串,此处需特别注意输出整型数据的格式:

	x(hex) 按十六进制格式显示变量。
	d(decimal) 按十进制格式显示变量。
	u(unsigned decimal) 按十进制格式显示无符号整型。
	o(octal) 按八进制格式显示变量。
	t(binary) 按二进制格式显示变量。
	a(address) 按十六进制格式显示变量。
	c(char) 按字符格式显示变量。
	f(float) 按浮点数格式显示变量

u:就是指以多少个字节作为一个内存单元-unit,默认为4。u还可以用被一些字符表示:
  如b=1 byte, h=2 bytes,w=4 bytes,g=8 bytes.

x/1db $ebp-0x8      从x/1db $ebp-0x8地址中取1个1byte,并以十进制显示变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值