分享人:北京分院 吴磊建
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
debug由来
关于debug的由来,要追溯到1937年。为马克2号计算机(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。 有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。 于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。
DEBUG是一种计算机程序。
是DOS系统中的一个程序,而且比较底层,涉及汇编,不是我们想要的
我们想要的是:Debugger
Debugger是什么?干什么的?怎么用?
我们经常使用到的“Debugger”只是用来帮助我们进行Debug的工具,“Debugger”本身不能自动完成“Debug”。
我们可以回想一下我们是如何进行Debug的,在进行Debug的过程中,我们通过Debugger来完成以下工作:
(1)监视“Debug对象”的状态;
(2)控制“Debug对象”的运行;
我们常用Debug来追踪代码的运行流程,通常在程序运行过程中出现异常, 启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。
通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
接下来说怎么用
F7:单步调试,会进入方法体,如果该方法体还有方法,则不会进入该内嵌的方法中
F8:单步调试,不会进入方法体
F9:跳至下一断点
Shift+F8:跳出
Alt+F8:可以通过在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 。
等等
小黄鸭调试法
相信大家都有类似的经历。遇到 Bug/问题被卡住了,拉个人过来,和他 blablabla 讲了一通,很多时候中途你就找到了解决办法。有时候,并不一定要和人倾诉,还可以像其他东西倾诉,强迫自己把遇到的问题,详细地解释出来(一定要说出来)。其实呢。这种方法,有一个术语:小黄鸭调试法(Rubber Duck Debugging)。
维基百科有解释:小黄鸭调试法是软件工程中使用的调试代码方法之一。就是在程序的调试、纠错或测试过程中,耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感。
https://www.linuxidc.com/Linux/2017-09/146772.htm
http://blog.csdn.net/qq_27093465/article/details/64124330
https://www.jianshu.com/p/44a0e069beb8
感谢观看,如有出错,恳请指正
BY : 北京分院 吴磊建