程序员从复杂代码中找BUG的5种方法,你用过几个?
有不少的新手程序员,刚开始都是从修BUG开始做起的。
修bug有助于熟悉项目,了解大概哪些类参与了执行线路,相互调用关系又是如何,结构设计上有什么特点。
对于新手程序员而言,在复杂代码中找BUG是一个难点。下面w3cschool给程序员小伙伴们分享5大找BUG的技巧:
0、二分法定位技巧
无论是有多复杂的代码,利用二分法定位技巧一般都是可以定位到问题所在。
从二分法定位技巧可以延伸出一些具体的处理bug的方法,比如:对输入数据二分、对代码版本二分、注释掉部分代码、在不同位置插入试探性代码、对运行环境二分。
1、IDE调试
IDE的VS debug的功能简直就是立竿见影。它可以加断点,单步调试。
单步调试可以让我们对代码逻辑,执行顺序,以及各种中间结果更加清晰。
至于本身容易出错的BUG,用IDE调试简直是再合适不过了。
2、重新读一遍程序
相对新手程序员来说,如果代码出现bug,可以重新读一遍程序。这种方法是最有效、最快速的 Debug 方式。
3、必杀,重写一遍
如果你发现无论如何也找不到BUG,而且代码只是复杂,本身不是很长,直接重写代码吧!
4、小黄鸭调试法
小黄鸭调试法是程序员们经常使用的调试代码方法之一。
小黄鸭不懂程序,所以我们可以向他解释每一行程序的作用,以此来激发灵感。
最后,你比较喜欢用哪一种方法调试bug呢?
程序员从复杂代码中找BUG的5种方法,你用过几个?相关推荐
- 程序员总结的:最没有学习效率的 5 种方法!你在用其中哪一种?
学习编程的弯路多得数不完,坑多得踩不完. 编程是一门手艺,需要不断地进行练习. 但是,不是所有的编程学习和练习都是有效的,下面笔者给程序员小伙伴总结出无效学习编程的5种方式,避免小伙伴们走弯路. 0. ...
- 一名Android程序员如何减少代码中该死的-if-else-嵌套,怎么让代码更简洁?
减少代码中该死的-if-else-嵌套,让代码更简洁! 写在前面 不知大家有没遇到过像"横放着的金字塔"一样的if else嵌套: if (true) {if (true) {if ...
- Java程序员如何在编码中减少bug存在
动力节点Java远程基础班免费赠送学习名额,机会就在眼前,快来报名吧,名额有限,先到先得. Java编程语言在IT行业毋庸置疑是企业中不可缺少的,从Web应用到Android应用,这款语言已经被广泛用 ...
- c语言清除html标签的方法,去除HTML代码中所有标签的两种方法
去除HTML代码中所有标签 '****************************** '函数:RemoveHTML_A(strText) '参数:strText,待处理的字符串 '作者:阿里西西 ...
- (转)程序员新人怎样在复杂代码中找 bug?
我曾经做了两年大型软件的维护工作,那个项目有10多年了,大约3000万行以上的代码,参与过开发的有数千人,代码checkout出来有大约5个GB,而且bug特别多,open的有上千,即使最高优先级的s ...
- 程序员新人怎样在复杂代码中找 bug?
我曾经做了两年大型软件的维护工作,那个项目有 10 多年了,大约 3000 万行以上的代码,参与过开发的有数千人,代码 checkout 出来有大约 5 个 GB,而且 bug 特别多,open 的有 ...
- 如何开发app软件?程序员揭秘你还没听过的1种方法
如何开发app软件?app软件开发需要多少钱?现在手机app这么火,很多企业都想开发一个app软件开拓市场.但是在开发app的时候往往会感觉力不从心,因为app开发门槛比较高,大家对app软件开发需要 ...
- 在JUnit中处理异常的3种方法。 选择哪一个?
在JUnit中,有3种流行的方式来处理测试代码中的异常: 尝试捕捉习语 使用JUnit规则 带注解 我们应该使用哪一个?何时使用? 尝试捕捉习语 这个习语是最受欢迎的习语之一,因为它已在JUnit 3 ...
- 计算机表演赛bug,只会编程序,敲代码,找bug?不,他们保研浙大、去美国进修……...
大学生活该如何度过?面对这个问题,南京林业大学信息院吉嘉铭.郭恒康和李明止三名同学有着独到的见解.近三年里,他们参加蓝桥杯软件大赛和信息技术专业人才大赛多场个人比赛,获得省部级以上多项奖励.2018- ...
最新文章
- L1-006 连续因子
- 【vue-router②】使用导航守卫控制页面前进刷新,后退缓存
- 大流量高并发量网站的之解决方案
- python telnet模块 more_[宜配屋]听图阁 - python 处理telnet返回的More,以及get想要的那个参数方法...
- 终端定时任务 开始缓冲_如何开始使用终端以提高生产力
- rtsp协议的视频服务器,RTSP拉流协议视频平台EasyNVR能够接入多少路视频直播流?...
- 搭建数字图像处理开发环境(Python+pycharm+opencv)
- mysql中的union用法以及子查询综合应用
- 二叉树和等于某值路径_Go刷LeetCode系列:二叉树(3)二叉树路径和
- checkValidity()验证输入信息合法性,自定义错误提示信息方法及误区
- 黑马程序员:java基础学习——数组
- Atitit Hadoop的MapReduce的执行过程、数据流的一点理解。 目录 1. Why 为什么使用hadoop	1 2. Hadoop的MapReduce的执行过程	1 2.1. Had
- 12月PMP备考~通关宝典
- Python生成文档(PDF, HTML)
- 如何修复win7蓝牙服务器,win7系统查看蓝牙的修复办法
- ENVI 5.3 计算NDVI的几种方法及结果的差异分析
- 在线数据图表制作-FineReport文本控件
- noindex如何使用?
- 论文阅读笔记——VulDeePecker: A Deep Learning-Based System for Vulnerability Detection
- java实现通过浏览器方式下载文件及多个文件
热门文章
- 计算机打开硬盘响应慢,电脑处理多任务卡顿,开机反应慢,换固态硬盘不能解决问题根本...
- SQL SERVER 提取字符串中字母
- E: Unable to locate package python-distutils The command ‘/bin/sh -c apt-get update apt-get insta
- 网站打开很卡是为什么?
- 网易云 -微信小程序-vue
- Linux快速安装Python3.6 - 邱乘屹的个人技术博客
- SQL中对 datetime 类型操作
- USB设备仿真框架设计指南——11.在托管代码中开发DSF应用程序
- mysql数据的复制与恢复_MySQL 数据库的备份与恢复
- 爱国者新品发布 智能果汁机助力双创 居家创业双赢新产能