我是一名新的Python用户,我一直在Matlab编程,所以我决定使用Spyder IDE(看起来非常像Matlab IDE)。
现在我想通过调试(逐行执行以便理解)一些python代码,这些代码被编写为具有多个内置函数的类。所以,我在类的__init__
函数中插入了一个断点,但是,当我开始调试时,它没有进入指定的断点(因为我必须调用类初始化,而不仅仅是代码执行)
是否可以从命令行启动类调试? 在Matlab中,我只是从命令行调用一个函数,它将在指定的断点处停止。在这里,我必须启动调试器,而不是调用函数。如果我只是打电话给以下人员:
import energy_model
x = energy_model.EnergyModel()
它只会执行并忽略我的断点。
希望我的问题很明确。 谢谢, 米哈伊尔
答案 0 :(得分:2)
首先,确保你在spyder中调试调试按钮,而不是运行按钮。运行按钮不会触发断点,因此您需要点击调试,然后继续到达代码中的第一个断点。
如果失败,可以选择使用python调试器(pdb)。这完全来自命令行,即运行调试命令和接收调试信息也将通过命令行。
__init__
然后从命令行运行将在def test(a_string):
print(a_string) # breakpoint set here will be hit
test("hello world")
方法中暂停执行。
此处列出了在命中断点时可以发出pdb的一些命令: https://nblock.org/2011/11/15/pdb-cheatsheet/
更新#1
spyder可以在
上触发断点的函数示例module.exports = new twilio.Twilio(accountSid, authToken);
答案 1 :(得分:1)
如果要在Spyder中调试代码,最好单击蓝色的“播放/暂停”按钮进行调试,以运行其中的模块。
那么我们如何调试没有脚本的所有类或函数的模块?我们将脚本全部放在if __name__=="__main__":
下,以添加仅在该模块是我们单击播放的模块时运行的脚本。 (See here for more info on how that works.)
然后,我们可以在要调试的函数或类中添加一个断点,从if __name__==__"__main__":
内调用该断点,并使用蓝色的“播放/暂停”按钮运行该模块,并从IPython控制台访问发生的事情。