如何在Visual Studio Code中,使用交互窗口变量开始Python调试会话?

4

我有一个 '.py' 文件,并在 Python 交互式窗口(VSCODE 的类似笔记本的功能)上运行其函数。所有变量和函数仅存储在此 Jupyter 环境中。它们甚至不能在终端上访问。

Img that shows the variables on my Jupyter env

当我点击“调试单元格”(如图所示),它会开始使用 Jupyter 环境进行调试,带有所有变量,但它不会停止在我设置的断点处。就好像它没有与 VSCODE 关联起来一样。

如果我键入 F5 或单击“运行和调试”,它将启动调试会话并运行整个 .py 文件,这不是我想要的。

在这种情况下,它可以访问断点,但无法访问我的变量。

我只想使用已经创建的变量调试代码的特定部分。我一定错过了非常简单的东西。

我在互联网上找到的唯一答案是“你应该创建一个 launch.json 文件”,但它并没有解决我的问题。

有人知道我错过了什么吗?

1个回答

2
当我在 Python 文件中点击“调试单元格”时,它会在“交互式”窗口中执行结果,并可以停留在我设置的断点处,我还可以在“交互式”窗口中看到代码中执行的变量值。

enter image description here

由于Python代码的调试功能和“交互式”功能是由Python扩展提供的,而Jupyter的内核功能也依赖于Jupyter扩展,请尝试重新安装这两个扩展并重新加载VS Code。
我的环境:
VS Code:1.53.1(用户设置)
Python:3.9.1
VS Code扩展:Python(2021.1.502429796);Jupyter(2020.12.414227052);Pylance(2021.2.2)。
操作系统:Windows_NT x64 10.0.19041

嗨,Jill,谢谢你的回答。实际上,正如你所说,它确实会在断点处停止。但是当我点击“步入”时,它的行为取决于我要进入的函数。 在某些函数中,它只是按预期进入代码。在其他函数中,它会打开另一个标签,标题为“<ipython-input-15-2027ded5d38c>”,并在其中执行代码,就像它在内存中一样。在这种情况下,它不会在这个其他标签上停止任何断点。这两个函数都已正确加载。我不知道可能导致这种不同的行为。你有什么想法吗? - Henrique Cardoso
@ Henrique Cardoso - "<ipython-input-15-2027ded5d38c>"是什么?当我们在代码中调用其他模块或方法时,调试会进入被调用的文件。您能否提供一个示例,以最小化遇到的问题的重复出现? - Jill Cheng
我认为我刚刚发现了一个错误,但我还不能复现它。 假设我无法进入函数 'example1()',(因为它打开 ipython 输入等)。 我刚刚发现,在我点击 example1() 单元格上的“调试单元格”后,只是为了在调试器中运行它,“步入”功能就像应该一样工作了。 就好像这个函数已经被加载到 Python 中,但没有加载到 VS Code 调试扩展中。 我不知道为什么会这样,但至少现在我知道如何解决它。 我将把您的答案标记为解决方案。谢谢 :) - Henrique Cardoso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接