调试 debugging
上学的时候,编译原理老师和我们说:有什么错调不出来就找他,他最喜欢作的事情就是帮别人调错。而且总能迅速找到问题所在,并提供解决方案,我们很佩服他。哈哈。
因为最近一个同事的问题,看书总结了一下调试的基本方法如下:
测试的目的是发现错误,当测试发现错误后需要进行调试,调试(debugging)的目的是确定错误的原因和准确的位置,并加以纠正。
调试过程,在执行测试用例时,如实际的执行结果与预期的结果不一致时,意味着程序中存在错误。调试过程首先是找到错误的原因和位置,其结果有一些两种。
1:找到错误的原因和位置,则将其改正,并进行回归测试,以确保这样改正未影响其他正常的功能。
2:未找到错误的原因和位置,此时应假设错误的原因,并设计测试用例来验证此假设,重复这一过程直到找到错误的原因,并加以改正。
调试方法
蛮力法:通过在程序中设置断点,输出寄存器,存储器的内容,打印有关变量的值等手段,获取大量现场信息,充足找出错误原因。
回溯法:从错误的征兆出发,人工沿着控制流程往回跟踪,直至发现错误的根源。
原因排除法:原因排除法又可分为归纳法和演绎法,
归纳是从特殊推向一般的系统化思考方法。
演绎法从一般原理或前提出发,假设所有可能出错的原因,排除不可能正确的原因推导出结论。
纠正错误
找到一个错误后必须将其纠正,同时必须清楚的知道,修改一个错误常常会引入新的错误。因此,在为纠正某个错误而修改程序之前应该回答以下三个问题。
1,程序的其他地方是否也存在同类的错误?
2,本次修改可能会引发什么新的错误?
3,为了防止这个错误我们应该做些什么?
调试 debugging相关推荐
- OpenGL 调试Debugging
OpenGL调试Debugging 调试Debugging简介 glGetError() 调试输出 GLFW中的调试输出 过滤调试输出 回溯调试错误源 调试着色器输出 OpenGL GLSL参考编译器 ...
- Gavin老师Transformer直播课感悟 - 图解Rasa对话机器人项目实战之教育领域Education Bot项目及综合调试Debugging实战解密(七十七)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目的架构进行分析,并通过debug模式演示与分析Rasa Agent如何与核心组件NLU ...
- vscode 调试debugging功能 -- 翻译学习
原文:https://code.visualstudio.com/docs/editor/debugging 调试 vscode的一个关键特性是它的强大的调试支持.vscode的内置调试可以帮助加速你 ...
- [云炬ThinkPython阅读笔记]1.7 调试
1.7 调试 程序员都会犯错.由于比较奇怪的原因,编程错误被称为故障 4,追踪错误的过程被称为调试 (debugging) . 编程,尤其是调试,有时会让人动情绪.如果你有个很难的 bug 解决不了, ...
- VS2005(c#)项目调试问题解决方案集锦
1.检测到有潜在危险的 Request.Form 值原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<fo ...
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- Linux内核调试方法总结
[转]Linux内核调试方法总结 目录[-] 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG ...
- 3D渲染技术分享:3D游戏开发渲染调试高级技巧
零.本文主要知识点 友情劝退:全文7400+字 如果知识点里没有你想要的,那可以直接拉到底,与评论区大神一战. 最初的计划是想写一篇关于KylinsGraphicsDebugger实现原理的文章,但感 ...
- Android调试必用工具adb命令详解
前言 adb全称为Android Debug Bridge,译为安卓调试桥.是一个命令行工具,主要用于调试设备.adb.exe放置在/sdk/platform-tools目录下,可对设备进行各种操作, ...
最新文章
- X-UA-Compatible
- AI回溯过去解决复杂任务 |《自然》论文
- hololens离线安装包都收集齐了
- ida提取hashab算法记录
- ar9344 9382 8035 编程器固件_沈阳熔铜炉设计,紧固件加热炉_宏祥电炉
- Mysql存储时间字段
- 使用Nginx+WordPress搭建个人网站
- 供应商关系管理SRM为企业的节流增贡献
- linux中 jdk 的卸载和安装[转]
- 免流量手机浏览器_不能不知的华为手机菜单栏,知道3个的算你手机没白买!...
- linux钩子函数和回调函数,Linux Kernel 学习笔记10:hook函数
- JavaScript的==和Java的==比较
- 走进小作坊(十五)----疯狂的站长
- 数字图像处理技术的应用领域
- 面积曲线AUC(area under curve)
- vue + 高德原生 API实现地图可视化
- 前端实现从视频中抽离出音频
- 微信公众号模板消息推送(PHP)
- 关于HTTP Authorization
- 五、需求分析建模之数据库建模