从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函数(或类)的主要内容,如果未能解决你的问题,请参考以下文章

从命令行运行 python 要求我导入模块

使用 Spyder 调试远程 python 文件

python执行命令行调试工具pdb

为啥我不能从 Spyder 导入 scikit-learn,但我可以从命令行导入?

如何在调用函数时打印它们?

如何重启spyder