How to debug a program(1)

一、程序调试:
1,静态调试
2,动态调试:“分段隔离”、“设置断点”、“跟踪打印”

二、GDB下:

1、可以使用几种方式来暂停程序:断点,观察点,捕捉点,信号,线程停止。
     ①设置断点:
           a、b(break) + [源代码行号]/[源代码函数名]/[内存地址]/[变量]
           b、b(break) ... if condition(condition可以是上述任一参数,如果condition是真,程序到达指定行或函数时停止)。
                例如:在循环体中可以设置break ... if i = 100 来设置循环次数。
     ②删除断点:
          a、delete
              用法:delete + [breakpoints num]/[range]
              delete可删除单个断点,也可删除一个断点的集合。
              例如:delete 5、delete 1-10、将所有的断点删除: delete breakpoint 。
          b、clear
              用法:clear + [源代码行号][源代码函数名][文件名]
              删除所在行的所有断点。
              例如:clear XXX.c:5 (删除XXX第5行的断点)、clear 12 。

2、r(run)

3、当程序被暂停后,可以使用continue、next、setp来继续执行程序:
     continue 执行到下一暂停点或程序结束。
     next 执行下一行不进入函数内部。
     setp 执行下一行进入函数内部。

4、查看数据:
    a、print variable 查看变量
         print *array@len 查看数组(array是数组指针,len是需要数据长度)
        可以通过添加参数来设置输出格式:
            /x 按十六进制格式显示变量。
            /d 按十进制格式显示变量。
    b、whatis 命令可以显示某个变量的类型

5、查看寄存器、内存:
    a、display + [格式] [内存]/[表达式]
    每当程序暂停时,显示内存或表达式内容(to display each time your program stops)

    display + *array @ n (显示0~n-1的内容)
l $pc : 程序计数器
l $fp : 帧指针(当前堆栈帧)
l $sp : 栈指针
l $ps : 处理器状态
    格式:/c、/i 、/x (???区别???)

GDB常用命令表

 

GDB回溯


三、eclipse 下:

口吃男教你DDDebug
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值