我的 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,因此它无限期地运行。程序在调试器中工作的原因是因为我强制时间步为非零值以使执行时间变小。无论如何感谢任何看到这个的人。