2017-08-15 102 views
-1

我在这个主题上看到了几个答案 - 其中一些现在(使用Python 3.6)已经过时 - 而且我还没有更清楚地知道如何做到这一点。On Error Goto in Python

我希望能够运行一个脚本,如果遇到错误,它会跳转到它暂停的位置,我可以测试任何局部变量的值以查看可能的错误。

在其他语言(例如VBA)中,我可以在错误转到ErrorHandler上,然后在错误处理程序中放置一个断点,打印出它的错误描述和行号,然后使用Locals或Immediate窗口看看我的变量在这一点上有什么价值。

我不想要大量的try/except语句,也不希望每次都以调试模式运行它。

有没有简单的Pythonesque方式让它暂停,而我看看问题?

+2

'try-except'? https://docs.python.org/3.6/tutorial/errors.html – DeepSpace

+0

如前所述,这是关于意料之外的错误。我希望它在遇到任何错误时暂停。 – KantarChris

回答

0

你会发现pdb模块有用。

模块pdb定义为Python 节目的交互式源代码调试器。它支持设置(有条件的)断点和单个源码行级别,栈帧检查,源码 代码列表,以及任意栈帧的上下文 中的任意Python代码评估。它也支持验尸调试,并且可以在程序控制下调用 。

pdb对于设置断点和验尸调试很有用。我相信这就是你要找的。

再次,从文档:

的典型用法闯入从正在运行的程序调试器是 的位置插入

import pdb; pdb.set_trace() 

要打入 调试。然后,您可以按照以下语句跳过代码 ,然后在没有调试器的情况下使用continue命令继续运行。

+0

我已经看到了。也许我没有正确使用它,但似乎我必须改变这个程序才能让它在正确的位置断开。 – KantarChris

+0

@KantarChris是的。您必须使用'pdb.set_trace()'添加一个断点。 –

+0

@KantarChris你知道吗?您还可以使用交互式标志运行脚本,如下所示:python -i script.py。脚本完成或发生错误后,将调用解释器进行调试。请注意,您只能看到全局范围内的数据。 –