本帖最后由 shenzhenwan10 于 2016-11-1 11:53 编辑
BUG有2种:
第一种,直接造成了错误,程序抛了个异常。
这种情况可以使用IPython, 抛出异常时自动把你带到 IPython Shell
第二种:隐藏BUG,也就是并没有报错,但是输出不符合预期
一般使用如下三个方法:
- 抛异常。直接让你想要调试的位置让它先跑个异常,比如Flask的DEBUG的模式下,werkzeug里面的DebuggedApplication就会把Web页面渲染成一个可调试和可执行的环境,直接进行调试。
- 在对应位置使用print和logging。这是最基础的玩法。
- 自己维护一些用于调试的库。我会把工作中常用到的、有用的一些函数、方法搜集起来,放在一个库里。其中有个获取调用栈的函数类似这样:
- import sys
- def get_cur_info():
- print sys._getframe().f_code.co_filename # 当前文件名
- print sys._getframe(0).f_code.co_name # 当前函数名
- print sys._getframe(1).f_code.co_name # 调用该函数的函数的名字,如果没有被调用,则返回module
- print sys._getframe().f_lineno # 当前行号
复制代码
可以通过看当前上下文的调用栈的输出来帮助你揪出那个隐藏的「虫」
|
|
|
|
|
共 1 个关于本帖的回复 最后回复于 2016-11-1 12:01