热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python程序如何高效地调试?-Python教程

现在我在debugpython程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位python大神一般是怎么debug自己的python程序的?
现在我在debug python程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位python大神一般是怎么debug自己的python程序的?

回复内容:

这个要怒答一发。
应该用过 IPython 吧?想象一下,抛出异常时自动把你带到 IPython Shell 是不是很开心?而且和普通的IPython不同,这个时候可以调用 p (print), up(up stack), down(down stack) 之类的命令。还能创建临时变量,执行任意函数。

事实上这是可以实现的, 而且很简单,不过你要先安装 IPython。然后把以下代码保存为 `crash_on_ipy.py`

import sys

class ExceptionHook:
    instance = None

    def __call__(self, *args, **kwargs):
        if self.instance is None:
            from IPython.core import ultratb
            self.instance = ultratb.FormattedTB(mode='Plain',
                 color_scheme='Linux', call_pdb=1)
        return self.instance(*args, **kwargs)

sys.excepthook = ExceptionHook()
想要类gdb的功能,可以使用pdb,例如:

import pdb
pdb.set_trace()

将上面2行加入到需要加断点的代码处,运行时,执行在此处即可中断,单步、继续、查看变量值等功能都有,不妨help下。 推荐PyCharm
不错的IDE,designed for python~ ,支持win,linux,maxos
支持断点调试,自带连接器(GitHub,Mantis,Jira,Bugzilla)
如果不考虑多语言混合编程,优于eclipse。
界面如下图:

个人使用体验不错,不过在macos系统下,配置interpreter要稍微折腾下。
官网传送门:jetbrains.com/pycharm/
一图胜千言,左上是调用栈,右上是变量值,底部是当前运行到那行代码,比print之类的调试方式效率高太多了。

用的是eclipse+pydev python -m pdb your.py 我最近使用了pudb,感觉比pdb的更加友好一些。linux下命令行安装很简单:

pip install pudb
常年print+type的路过~ 必须是ipython。调试程序的最佳时刻是程序出错的时候,有时候运行出了错误之后再调用调试器重现一遍可能错误又不能复现了,或者是再现错误需要很长的运行时间。而在ipython里运行程序可以在出错的第一时间进行调试,查看堆栈里的内容,绝对是方便之极。 试了下vs2015的py组件,感觉不比pycharm差 常年vim或者textmate. 调试print.dir, type等。再搞不懂就pdb..
推荐阅读
author-avatar
吴素婷76625
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有