从Spyder的命令行调试Python函数(或类)

问题描述 投票:0回答:1

我是一个新的Python用户,我一直在Matlab编程,所以我决定使用Spyder IDE(看起来非常像Matlab IDE)。

现在我想调试(逐行执行以便理解)一些python代码,它被编写为具有几个内置函数的类。所以,我在类的__init__函数中插入了一个断点,但是,当我开始调试时,它没有进入指定的断点(因为我必须调用类初始化,而不仅仅是代码执行)。

是否可以从命令行启动类调试?在Matlab中,我只是从命令行调用一个函数,它将在指定的断点处停止。在这里,我必须启动调试器,而不是调用函数。如果我只是拨打以下电话:

import energy_model
x = energy_model.EnergyModel()

它只会执行并忽略我的断点。

希望我的问题很明确。谢谢,米哈伊尔

python debugging spyder
1个回答
2
投票

首先,确保你在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")
© www.soinside.com 2019 - 2024. All rights reserved.