快捷导航
本帖最后由 shenzhenwan10 于 2016-11-1 11:53 编辑

BUG有2种:

第一种,直接造成了错误,程序抛了个异常

  这种情况可以使用IPython, 抛出异常时自动把你带到 IPython Shell

第二种:隐藏BUG,也就是并没有报错,但是输出不符合预期
一般使用如下三个方法:
  • 抛异常。直接让你想要调试的位置让它先跑个异常,比如Flask的DEBUG的模式下,werkzeug里面的DebuggedApplication就会把Web页面渲染成一个可调试和可执行的环境,直接进行调试。
  • 在对应位置使用print和logging。这是最基础的玩法。
  • 自己维护一些用于调试的库。我会把工作中常用到的、有用的一些函数、方法搜集起来,放在一个库里。其中有个获取调用栈的函数类似这样:
  1. import sys
  2. def get_cur_info():
  3.     print sys._getframe().f_code.co_filename  # 当前文件名
  4.     print sys._getframe(0).f_code.co_name  # 当前函数名
  5.     print sys._getframe(1).f_code.co_name # 调用该函数的函数的名字,如果没有被调用,则返回module
  6.     print sys._getframe().f_lineno # 当前行号
复制代码

可以通过看当前上下文的调用栈的输出来帮助你揪出那个隐藏的「虫」




举报 使用道具
| 回复

共 1 个关于本帖的回复 最后回复于 2016-11-1 12:01

Fuller 管理员 发表于 2016-11-1 12:01:27 | 显示全部楼层
好经验。希望看到更多分享
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 微博热点话题分析选什么题目比较好?
  • 如何运行数据分析和可视化Jupyter Notebook
  • 如何使用快捷采集-以安居客房源采集为例
  • 2020年(第七届)全国大学生统计建模大赛优
  • 基于新浪微博评论数据的消费券政策效果评估

热门用户

GMT+8, 2021-6-17 03:39