软件构造6.4

What is Bug and What is Debugging

找到bug并消除,最后手段,测试发现问题,debug消除问题

Process for debugging

  • reproduce 重现
    找到一种可靠且方便地按需重现问题的方法
  • diagnose 诊断
    构建假设,并通过执行实验来测试它们,直到您确信自己已经确定了缺陷的潜在原因
  • fix 修复
  • reflect 反思
Reproduce the bug

从最小的测试用例集开始复现错误,确定哪些因素和bug有关,找出来并变化值
注意软件版本,软件的运行环境,输入数据

Diagnosing the bug
  • 测量
    指令插入
  • 分治
    排除法
  • 切片
  • 寻找差异
    利用版本控制,找出前后差异
    git bisect
  • 符号调试
    在这里插入图片描述
  • debugger调试器

Debugging tools

  • Debugging by Brute Force
    看内存导出文件,到处 println(),自动化调试工具
Post-mortem debugging: memory dump事后调试:内存转储

硬盘上的一种文件,包含某一特定时间进程内存内容的副本,当进程因某种内部错误或信号而中止时产生
当程序中止时,可以进行内存转储,以便在崩溃时检查程序的状态

Post-mortem debugging: stack trace 事后调试:堆栈跟踪

在这里插入图片描述
getStackTrace
在这里插入图片描述

Printf debugging 利用程序的动态信息输出进行调试

在这里插入图片描述

Logging 充分利用日志,可以发现一些问题

在这里插入图片描述
在这里插入图片描述
getlogger
来定义自己的log
在这里插入图片描述
日志处理器也需要设定日志级别
在这里插入图片描述
也可以是FileHandle等其他位置

Compiler Warning Messages
Debugger: breakpoints, etc

step over 不进入其他方法
step into 进入
step return 运行整个方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值