从Spyder的命令行调试Python函数(或类)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Spyder的命令行调试Python函数(或类)相关的知识,希望对你有一定的参考价值。
我是一个新的Python用户,我一直在Matlab编程,所以我决定使用Spyder IDE(看起来非常像Matlab IDE)。
现在我想调试(逐行执行以便理解)一些python代码,它被编写为具有几个内置函数的类。所以,我在类的__init__
函数中插入了一个断点,但是,当我开始调试时,它没有进入指定的断点(因为我必须调用类初始化,而不仅仅是代码执行)。
是否可以从命令行启动类调试?在Matlab中,我只是从命令行调用一个函数,它将在指定的断点处停止。在这里,我必须启动调试器,而不是调用函数。如果我只是拨打以下电话:
import energy_model
x = energy_model.EnergyModel()
它只会执行并忽略我的断点。
希望我的问题很明确。谢谢,米哈伊尔
答案
首先,确保你在spyder中调试调试按钮,而不是运行按钮。运行按钮不会触发断点,因此您需要点击调试,然后继续到达代码中的第一个断点。
如果失败了,一个选择是使用python调试器(pdb)。这完全来自命令行,即运行调试命令和接收调试信息也将通过命令行。
class EnergyModel:
__init__(self):
# set breakpoint
import pdb; pdb.set_trace()
...
然后从命令行运行将在__init__
方法中暂停执行。
这里列出了在命中断点时可以发出pdb的一些命令:https://nblock.org/2011/11/15/pdb-cheatsheet/
更新#1
spyder可以触发断点的函数示例
def test(a_string):
print(a_string) # breakpoint set here will be hit
test("hello world")
以上是关于从Spyder的命令行调试Python函数(或类)的主要内容,如果未能解决你的问题,请参考以下文章