学会 Debug

Debug 的重要性

我们在《FirstWeb》中非常强调 Debug,当时是基于 Chrome 浏览器的 Debug。
Debug 的重要性毋庸置疑,《FirstWeb》中甚至说学会了 Debug,其实前端技术也算入门了。对于 Python 这个后端的语言,也是同样的道理,学会了 Debug,也算是技术入门了。

如何 Debug

我们先在一个函数内的某行代码前,增加断点 (左键点击行码的右侧即可),然后右键文件管理器区域 点击当前的 .py 文件,选择 Debug,默认情况下,会自动为当前的 .py 文件创建一个同名的 Debug 配置。

Debug 模式运行的时候,会在断点的地方暂停,除非按下继续运行 按钮,才会继续工作下去。 底部的 Debugger 区域比较重要的是 变量区域,在这里,我们可以比较清楚的看见当前行代码对应的空间(NameSpace)内有哪些变量存在。当前断点不用暂停了,要继续执行下去的,点击 继续执行 的按钮。

Debug 时,程序运行到 断点 暂停之后,并非只能查看 当下断点,还能追本溯源,看到进入当前代码行 之前的入口,从而切换到之前、之前的之前 .etc 的上下文中,如下图所示,点击后,对应的 变量区域 也会发生变化,当然 Console 是针对当前选中的 上下文 的,所以,它也会发生变化。

另外,非常重要的是 Console 栏变量区域 可以让我们看到当前上下文的各种变量,但是只有 看到 很多时候是不够用的,遇到了问题,或许我们想直接试验某行代码 看看最终的效果如何,这时需要能进入 可交互的 Python 命令行 的状态。

注意: 如果代码内使用了 Gevent 进行了异步并发,那么 PyCharm 内的 Preferences 内找到并勾选 Gevent compatible

看源码

在最开始的『鹰鸽博弈』中,我们就开始阅读源码了,并且一再强调不求甚懂,能读下来就可以。
因为,看别人的代码,多数情况下,是痛苦的。思路复杂的,从表面的代码出发再去理解原始的思路,会很困难;即使思路简单的,也不能保证原作者在写代码时会保持简单的风格。
如果没有必要,真不要去看别人的源代码。
只不过呢,看源码 又确是非常重要。一来能明白某个函数、某个类的具体用法;二来有时能吸收原作者某些自己未见的技巧,从而提高自己写代码的能力;最后,如果要修掉原作者的 bug,肯定要看他的源代码 (这一步看起来很遥远?不是的,只要你保持使用代码去实现产品,经历一段不短的时间,自然会发生的事情)。

似乎,看与不看 之间,显得有些矛盾?
并非如此,按需看源码 是非常必要的,不论对 Python 的掌握处于什么阶段,这个按需看源码非常必要。对于初学者而言,更不用说了,它能逐步提高我们写代码的能力,只要我们花时间去站在产品的角度去解决问题,自然会接触到别人已有的技术方案、package,自然会了解到别人的源码。
非常有意思的现象:只要你用了,你就能学会。倒不需一开始就要学到方方面面的知识,才能开始 ,边学边用,边用边学,互为反哺。

那怎么能按需看源码呢?
很简单,在 PyCharm 内,一直按住 Command 键,然后鼠标移动到某个 package 名称、某个函数、某个变量,如果此时出现 下划线 的,就像 网页的超级链接 一般,然后左键点击,就可以了。

我学会 Debug 了吗?

如何 Debug,本质上只是 PyCharm 作为一个软件、工具的使用方式而已,如上的一些说明,应该足以让我们学会如何借助 PyCharm 帮我们更方便的 Debug。
如果后续对这个工具在 Debug 方面需要有更多的了解,自己再去了解即可。于我个人而言,本文介绍的内容,也已经是自己日常使用 PyCharm 进行 Debug 的主要用法。

遇到了一个具体的 Bug,然后去 Debug,那么 如何 Debug 是具体到这个 Bug 怎么解决 的层面,倒没有什么特别的经验可以传授,慢慢解决的 Bug 多了,也就有了经验。
毕竟,比工具更加重要的,是我们的思考。