debug调试

java分享会

分享人:北京分院 吴磊建

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

debug由来

关于debug的由来,要追溯到1937年。为马克2号计算机(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。 有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。 于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。

2.知识剖析

DEBUG是一种计算机程序。

是DOS系统中的一个程序,而且比较底层,涉及汇编,不是我们想要的

我们想要的是:Debugger

3.常见问题

Debugger是什么?干什么的?怎么用?

4.解决方案

我们经常使用到的“Debugger”只是用来帮助我们进行Debug的工具,“Debugger”本身不能自动完成“Debug”。

我们可以回想一下我们是如何进行Debug的,在进行Debug的过程中,我们通过Debugger来完成以下工作:

(1)监视“Debug对象”的状态;

(2)控制“Debug对象”的运行;

我们常用Debug来追踪代码的运行流程,通常在程序运行过程中出现异常, 启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。

通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。

接下来说怎么用

F7:单步调试,会进入方法体,如果该方法体还有方法,则不会进入该内嵌的方法中

F8:单步调试,不会进入方法体

F9:跳至下一断点

Shift+F8:跳出

Alt+F8:可以通过在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 。

等等

5.编码实战

6.扩展思考

小黄鸭调试法

相信大家都有类似的经历。遇到 Bug/问题被卡住了,拉个人过来,和他 blablabla 讲了一通,很多时候中途你就找到了解决办法。有时候,并不一定要和人倾诉,还可以像其他东西倾诉,强迫自己把遇到的问题,详细地解释出来(一定要说出来)。其实呢。这种方法,有一个术语:小黄鸭调试法(Rubber Duck Debugging)。

维基百科有解释:小黄鸭调试法是软件工程中使用的调试代码方法之一。就是在程序的调试、纠错或测试过程中,耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感。

7.参考文献

https://www.linuxidc.com/Linux/2017-09/146772.htm

http://blog.csdn.net/qq_27093465/article/details/64124330

https://www.jianshu.com/p/44a0e069beb8

8.更多讨论

鸣谢

感谢观看,如有出错,恳请指正

BY : 北京分院 吴磊建