调试Python代码

调试Python代码,第1张

调试Python代码

一般来说,我们不会在代码里包含错误(嘻嘻),但为了极少数可能遭遇不幸的朋友,这里介绍现实世界里的Python程序员调试代码时候常用的一些策略:

什么也不做
我这么讲并不是说Python程序员不需要调试自己的代码,但是,当你在一个Python程序中犯错的时候,会得到一条非常有用且容易读懂的出错消息(如果你已经有了一些错误的话)。如果你已经了解Python,特别是如果你已经熟悉自己的代码了,那么这么做就通常够了——阅读出错消息,并修改标记的行和文件。对于很多人来说,这就是Python里的调试。但是,对于你没有编写过的大型系统来说,这并不总是理想的做法。

插入print语句
可能Python的程序员调试自己的代码的主要方式(以及我调试Python程序的方式)这就是插入print语句并再次运行。由于Python在修改后立即运行,这通常是获取比错误信息所提供的更多信息的一种快捷方式。print语句不必很复杂,一条“I’m here”或变量值的提示,通常就能够提供你所需的足够信息,只是别忘了,在发布你的代码之前,删除掉或者注释掉(如在前面添加#)用来调试的print。

使用IDE GUI调试器
对于你没有编写过较大的系统,以及对于那些想要更详细地追踪代码地初学者,大多数Python开发GUI都有某种指向点击调试器,IDLE也有一个调试器,但它在实际过程中并不常用,可能是因为它没有命令行,或者可能是因为添加print语句通常比设置一个GUI调试会话要快。要了解更多的内容,查阅IDLE的帮助,或者直接自己尝试。其他的IDE(如Eclipse、NetBeans、Komodo和WingIDE)也都是提供了高级的指向点击调试器。

使用pdb命令行调试器
为了实现最终控制,Python附带了一个名为pdb的源代码调试器,可以作为Python的标准库中的一个模块使用。在pdb中,我们输入命令来一行一行的步进执行,显示变量,设置和清除断点,继续执行到一个断点或错误。你可以通过导入交互式地启动pdb,或者作为一个顶层脚本启动。不管采用哪种方式,我们可以输入命令来控制会话,他都提供了强大的调试工具。pdb还包含了一个postmortem函数(pdb.pm()),可以在异常发生后执行它,从而获取发生错误的信息。

使用Python的-i命令行参数
除了添加打印或在pdb下运行外,你仍然能够看见是什么出了错。如果你从命令行运行脚本,并在Python和脚本名称之间传递了-i参数(即python -i m.py),当你的脚本退出时,Python就会进入到它的交互解释器模式(>>>提示符),无论他是成功地结束还是产生错误。此时此刻,你可以打印变量的最终值来获得关于代码中所发生的更多细节,因为他们处于顶层的命名空间。甚至这之后你还可以导入和运行pdb调试器以了解更多的相关背景;如果脚本运行失败,它的算后检查模式将允许你检查最新的错误。

其他选项
如果有更具体的调试需求,你可以在开源领域找到其它的工具,包括支持多线程程序、嵌入式代码和进程附件的工具。例如,Winpdb系统是一个独立的调试器,具有高级的调试支持、跨平台的GUI和控制台界面。

随着我们开始编写较大的脚本,这些选项将变得更加重要。然而,关于调试最好的消息可能时在Python中检测出并报告错误,而不是默默地传递错误或最终倒是系统崩溃。实际上,错误本身是一种定义良好的机制,成为异常,我们可以捕获并处理它们。当然犯错并不好玩,但是正如某人回忆到,当进行调试意味着最终得出一个十六进制计算器和仔细钻研成堆的内存转储输出的时候:有了Python的调试器支持,所犯的错误不会像没有调试器的情况下那样的令人痛苦不堪。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存