上学的时候,编译原理老师和我们说:有什么错调不出来就找他,他最喜欢作的事情就是帮别人调错。而且总能迅速找到问题所在,并提供解决方案,我们很佩服他。哈哈。

因为最近一个同事的问题,看书总结了一下调试的基本方法如下:

测试的目的是发现错误,当测试发现错误后需要进行调试,调试(debugging)的目的是确定错误的原因和准确的位置,并加以纠正。

调试过程,在执行测试用例时,如实际的执行结果与预期的结果不一致时,意味着程序中存在错误。调试过程首先是找到错误的原因和位置,其结果有一些两种。
1:找到错误的原因和位置,则将其改正,并进行回归测试,以确保这样改正未影响其他正常的功能。
2:未找到错误的原因和位置,此时应假设错误的原因,并设计测试用例来验证此假设,重复这一过程直到找到错误的原因,并加以改正。

调试方法
蛮力法:通过在程序中设置断点,输出寄存器,存储器的内容,打印有关变量的值等手段,获取大量现场信息,充足找出错误原因。
回溯法:从错误的征兆出发,人工沿着控制流程往回跟踪,直至发现错误的根源。
原因排除法:原因排除法又可分为归纳法和演绎法,
归纳是从特殊推向一般的系统化思考方法。
演绎法从一般原理或前提出发,假设所有可能出错的原因,排除不可能正确的原因推导出结论。

纠正错误
找到一个错误后必须将其纠正,同时必须清楚的知道,修改一个错误常常会引入新的错误。因此,在为纠正某个错误而修改程序之前应该回答以下三个问题。
1,程序的其他地方是否也存在同类的错误?
2,本次修改可能会引发什么新的错误?
3,为了防止这个错误我们应该做些什么?

调试 debugging相关推荐

  1. OpenGL 调试Debugging

    OpenGL调试Debugging 调试Debugging简介 glGetError() 调试输出 GLFW中的调试输出 过滤调试输出 回溯调试错误源 调试着色器输出 OpenGL GLSL参考编译器 ...

  2. Gavin老师Transformer直播课感悟 - 图解Rasa对话机器人项目实战之教育领域Education Bot项目及综合调试Debugging实战解密(七十七)

    本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目的架构进行分析,并通过debug模式演示与分析Rasa Agent如何与核心组件NLU ...

  3. vscode 调试debugging功能 -- 翻译学习

    原文:https://code.visualstudio.com/docs/editor/debugging 调试 vscode的一个关键特性是它的强大的调试支持.vscode的内置调试可以帮助加速你 ...

  4. [云炬ThinkPython阅读笔记]1.7 调试

    1.7 调试 程序员都会犯错.由于比较奇怪的原因,编程错误被称为故障 4,追踪错误的过程被称为调试 (debugging) . 编程,尤其是调试,有时会让人动情绪.如果你有个很难的 bug 解决不了, ...

  5. VS2005(c#)项目调试问题解决方案集锦

    1.检测到有潜在危险的 Request.Form 值原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<fo ...

  6. Linux内核调试方法总结【转】

    转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...

  7. Linux内核调试方法总结

    [转]Linux内核调试方法总结 目录[-] 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG ...

  8. 3D渲染技术分享:3D游戏开发渲染调试高级技巧

    零.本文主要知识点 友情劝退:全文7400+字 如果知识点里没有你想要的,那可以直接拉到底,与评论区大神一战. 最初的计划是想写一篇关于KylinsGraphicsDebugger实现原理的文章,但感 ...

  9. Android调试必用工具adb命令详解

    前言 adb全称为Android Debug Bridge,译为安卓调试桥.是一个命令行工具,主要用于调试设备.adb.exe放置在/sdk/platform-tools目录下,可对设备进行各种操作, ...

最新文章

  1. X-UA-Compatible
  2. AI回溯过去解决复杂任务 |《自然》论文
  3. hololens离线安装包都收集齐了
  4. ida提取hashab算法记录
  5. ar9344 9382 8035 编程器固件_沈阳熔铜炉设计,紧固件加热炉_宏祥电炉
  6. Mysql存储时间字段
  7. 使用Nginx+WordPress搭建个人网站
  8. 供应商关系管理SRM为企业的节流增贡献
  9. linux中 jdk 的卸载和安装[转]
  10. 免流量手机浏览器_不能不知的华为手机菜单栏,知道3个的算你手机没白买!...
  11. linux钩子函数和回调函数,Linux Kernel 学习笔记10:hook函数
  12. JavaScript的==和Java的==比较
  13. 走进小作坊(十五)----疯狂的站长
  14. 数字图像处理技术的应用领域
  15. 面积曲线AUC(area under curve)
  16. vue + 高德原生 API实现地图可视化
  17. 前端实现从视频中抽离出音频
  18. 微信公众号模板消息推送(PHP)
  19. 关于HTTP Authorization
  20. 五、需求分析建模之数据库建模

热门文章

  1. 深度神经网络及目标检测学习笔记
  2. Multisim14创建LM386教程(含所需文件)
  3. JWT简介、JWT优缺点、JWT使用方法、.NET6使用JWT示例、JWT与Session对比
  4. HTML利用posotion属性定位 小技巧
  5. vue 使用百度 API 实现图像识别
  6. ARM NEON优化4.RGB图像转灰度图
  7. c语言lcm函数的头文件,LCM中C++的API介绍
  8. PIPIOJ 1004: 惠民工程
  9. 对网易云音乐参数(params,encSecKey)的分析
  10. 163net邮箱,对商务办公人士有哪些帮助?