PyDev:如何从控制台调用特定调试命令(带断点)?

6 投票
1 回答
3275 浏览
提问于 2025-04-18 15:12

假设我写了一个函数,现在想要调试它。

PyDev 提供了很多调试的高级功能,比如断点,这让调试变得简单多了。

设置好断点后,调试的一种方法是在 def main() 中或者模块的主体部分写一个调用这个函数的代码,然后按下 enter image description here 按钮。

有没有办法从控制台启动这个函数的调试会话,并传入参数?(就像在 RStudio 或 VBA 中那样…)


这个问题和 pydev: debug in console mode (interactive)? 是重复的。


更新: 我真的不知道,哪种点击组合能让交互式调试变得可能。

以下是我尝试过的,但没有成功(在 Ubuntu 14.04 和 Eclipse 4.4.I20140606-1215,使用 PyDev 3.6.0.2014062323,Python 3.4.0,IPython 1.2.1)。

第一次尝试:

首先,我创建一个新的 PyDev 项目:enter image description here

然后我插入一个新的 .py 文件,写一些代码,并设置一些断点:enter image description here

接着,我在代码上右键点击,选择 Debug As... -> Python run

然后打开了两个控制台,但都不是 IPython。活动控制台的名字是 [Debug console] proba.py[Debug console] proba.py 在这个控制台输入命令并不会执行。

还有一个控制台,名字就是 proba.py<code>proba.py</code> console 这个控制台是完全交互式的,虽然它不是 IPython

这确实是一个交互式调试器。可以逐步执行代码并检查变量。不过,更新变量是不支持的;如果我输入命令 a=10,变量不会更新。

第二次尝试

这次,在启动调试会话之前,先尝试启动 IPython。按下 Ctrl+Alt+Enter 后,我选择 Console for currently active editor

enter image description here

然后选择 Python3(因为这是我需要的):enter image description here

之后我得到了一个完全可用的 IPython 控制台。IPython console

当我通过 execfile 执行文件时,出现了一个错误 Failed to create input stream: Read timed outenter image description here

虽然逐步执行代码似乎是有效的,但我无法从 IPython 控制台访问变量,尽管可以从变量视图中访问它们:enter image description here

1 个回答

3

其实,是的,你可以在最新的PyDev版本中做到这一点。

你需要在设置中启用这个功能,具体方法可以参考这里:

http://pydev.org/manual_adv_interactive_console.html#full-debug-support-in-interactive-console

(也就是说:将控制台连接到调试会话)


补充说明(关于第二部分):

不幸的是,事情就是这样,这种情况是正常的……你的代码在一个断点处“被阻塞”,所以在这个模式下,控制台无法回应你,也无法进行任何计算(此时你只能使用调试器的监视/表达式),所以,想法是你可以使用控制台来执行一些操作,然后如果需要的话可以添加一个断点,但你只能在离开断点后再次使用控制台。

请注意,如果你想在断点的上下文中使用交互式控制台,另一种方法是选择一个堆栈帧(在调试视图中)> 右键点击它 > 选择pydev > 调试控制台(或者你也可以在调试视图中创建一个新的控制台视图,连接到调试会话,效果是一样的)。

撰写回答