我的Python PDB调试器和用SciTE编写的代码有问题。
所以我有一个名为“func”的类。这个类有一个叫做“hermite”的方法。我正在使用PDB调试器来确定我的程序在执行此方法时冻结的原因。
我从:
开始pdb.set_trace()
func.hermite(a,b,c)
当我按“n”时程序冻结,转到调试器的下一行。
如果我将pdb.set_trace()
放在方法“hermite”中,我会得到:
def hermite(a,b,c):
pdb.set_trace()
.... (stuff here)
现在在调试器中,该方法完全执行,完全没有问题。
我不知道为什么在调用方法时调试器会冻结,但是什么时候
set_trace
放在程序运行的方法中。而且,在SciTE中,无论如何
放置where set_trace()
,程序无法运行。所以它好像程序只会运行
从调试器开始,在方法中使用set_trace,出于某种原因。
关于问题是什么的任何想法?我会粘贴“hermite”的代码,但它很长。我认为
重要的一点是,当set_trace
在方法内部时,它执行得非常好,但是当set_trace
在它之外时,它会冻结。
更新: 没关系我已经解决了这个问题。在我的hermite方法中,我是时间步进微分方程式,我使用(15 - ( - 15))/ 100作为我的时间步长间隔,而python将值设为0,因此它无限期地运行。程序在调试器中工作的原因是因为我将时间步长强制为非零值以使执行时间变小。非常感谢任何看过这个的人。