在Spyder中从命令行调试Python函数(或类)
我是一个新的Python用户,一直在用Matlab编程,所以我决定使用Spyder IDE(它看起来很像Matlab IDE) 现在我想调试(逐行执行以便理解)一些python代码,这些代码是作为一个类编写的,带有几个内置函数。因此,我在类的在Spyder中从命令行调试Python函数(或类),python,debugging,spyder,Python,Debugging,Spyder,我是一个新的Python用户,一直在用Matlab编程,所以我决定使用Spyder IDE(它看起来很像Matlab IDE) 现在我想调试(逐行执行以便理解)一些python代码,这些代码是作为一个类编写的,带有几个内置函数。因此,我在类的\uuuu init\uuu函数中插入了一个断点,但是,当我开始调试时,它没有到达指定的断点(因为我必须调用类初始化,而不仅仅是代码执行) 可以从命令行开始类调试吗? 在Matlab中,我只需从命令行调用一个函数,它将在指定的断点处停止。在这里,我必须启动一
\uuuu init\uuu
函数中插入了一个断点,但是,当我开始调试时,它没有到达指定的断点(因为我必须调用类初始化,而不仅仅是代码执行)
可以从命令行开始类调试吗?
在Matlab中,我只需从命令行调用一个函数,它将在指定的断点处停止。在这里,我必须启动一个调试器,而不是调用一个函数。如果我简单地称之为:
import energy_model
x = energy_model.EnergyModel()
它将只执行并忽略我的断点
希望我的问题清楚。
谢谢
Mikhail首先,确保您在spyder中点击的是调试按钮,而不是运行按钮。run按钮不会触发断点,因此您需要点击debug,然后继续访问代码中的第一个断点 如果失败,一个选项是使用python调试器(pdb)。这完全来自命令行,即运行调试命令和接收调试信息也将通过命令行
class EnergyModel:
__init__(self):
# set breakpoint
import pdb; pdb.set_trace()
...
从命令行运行将在\uuuu init\uuu
方法中暂停执行
此处列出了在命中断点时可以发出pdb的一些命令:
更新#1
spyder可以在其上触发断点的函数示例
def test(a_string):
print(a_string) # breakpoint set here will be hit
test("hello world")
如果您想在Spyder中调试代码,最好通过单击蓝色的“播放/暂停”按钮来运行它所在的模块进行调试 那么,我们如何调试一个所有类或函数都没有脚本的模块呢?我们添加了一个脚本,该脚本仅在我们单击播放该模块时运行,方法是将其全部放在
下,如果
中的。(
然后我们可以在我们想要调试的函数或类中设置一个断点,从
中调用该断点,如果
,则在中调用该断点。谢谢您的提示,但我的问题是:我可以调用函数调用(或类创建命令)吗使用调试模式(而不是运行模式)?我可能会有误解。如果我在spyder中设置了一个断点,如上面的edit 1中所示,然后运行debug,然后继续,spyder将在断点处停止。您不是这样吗?