gdb调试

启动方式:
  gdb
  gdb test.out / gdb file test.out
  gdb test.out core //程序异常所产生的奔溃文件
动态链接:
  gdb test.out pid //监视所对应的的某一进程
 
启动调试流程:
  gdb
  gdb file test.out
  gdb set arges arge1 arge2  //指定参数是可以 var g_point=(int*)malloc(sizeof(int))
  run / start //程序启动后立即停止在main函数入口


  gdb
  gdb attach pid //链接到目标进程
  gdb continue

gcc -g //编译带上调试信息
ulimit -c unlimited  //让程序在奔溃时产生core文件


软件断点相关:
  break func_name [ if var = value ]
  tbreak func_name [ if var = value ]

  break file_name:line_num [ if var = value ]
  tbreak file_name:line_num [ if var = value ]

  info breakpoints  //断点查看
  delete 1 2 n    //断点删除
  delete breakpoints
  enable / disable  //断点状态改变

调式时常用命令:
  print name  //变量查看
  set var name=value  //变量设置
  next  //执行下一行代码
  next n  //连续执行n行代码
  step  //执行进入函数
  return [value]  //强制当前函数返回
  finish  //运行至当前函数返回
  until line  //执行至目标行
  jump line  //跳转执行

硬件断点:
    当代码位于只读存储器(flash)时,只能通过硬件断点调试
    硬件断点需要硬件支持,数量有限
    gdb中通过hbreak支持硬件断点

数据断点:
    watch var_name    //用于监视变量是否改变(本质为硬件断点)

内存查看:
    x /1bx 0x804a024
    u参数:b 单字节, h 双字节, w 四字节, g 八字节

函数调用栈的查看:
    backtrance    //查看函数调用的顺序
    frame N        //切换到栈编号为N的上下文中
    info frame    //查看当前函数调用的栈帧信息

    info registers    //查看当前寄存器的值
    info arges    //查看当前函数参数的值
    info locals    //查看当前局部变量的值
    info variables    //查看程序中的变量符号
    info functions    //查看程序中的函数符号

技巧:
    display /f expression    //断点处自动打印  display /d i   display /d i*i
    whatis/ptype    //查看程序中的符号
    list    //gdb的代码查看
    shell    //gdb中shell操作
    

 

 

----------------------------------------------------------------------来源自狄泰软件学院------------------------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值