名词解释:
野路子:口语,指的是非科班出身的,非正规的。
暴力的调试:
很多人一开始跟我一样,喜欢用这样的方式调试程序:
1 | print "*****************" |
别小看这几行代码,两边的*号,方便自己一眼就能看到想打印的值,之后的代码不但打印了值,还打印了类型,对于调试python这样的动态语言再好不过了。
之后我们使用二分查找的方法,逐步逼近问题。。。还自我感觉很聪明。
pdb
我不知道为啥很多直接学python的人,这么不喜欢用调试器,还盲目的喜欢黑微软,拜托,你去用一下c#和vs,就会明白你的vim,emacs和shell有多渣。
后来我明白了,他们并不知道有这么好用的东西。
命令 解释
----------------
break 或 b 设置断点 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 或 p 打印变量的值
help 帮助
pgb 可以让你在某处打断点,然后一行行的执行代码,查看变量,看看到底是哪里出了问题。
1 | import pdb |
1 | localhost% python test.py |
可惜,pdb过于简陋,连个高亮都没有。所以我建议你使用ipdb算了。(需要安装ipython和ipdb)
1 | import ipdb |
pdb相当于在python解释器中操作,而ipdb相当于在ipython解释器中操作,ipython的强大就不用多说了。
pycharm
这个不用多说了,IDE在左边打一个红点,就是一个断点。然后就看窗口中的变量值就行了。
最后的福利:
想不想你的python代码出现了,直接能够跳到ipython中,你方便的查看是哪里出现了问题?
将下面代码做成一个crash_on_ipy.py文件,然后import进来就行了。
1 | import sys |