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

Posted

技术标签:

【中文标题】PyDev:如何从控制台调用调试特定命令(带断点)?【英文标题】:PyDev: How to invoke debugging specific command from console (with breakpoints)? 【发布时间】:2014-09-21 00:50:40 【问题描述】:

假设我编写了一个要调试的函数。

PyDev 的高级功能(如断点)极大地帮助了调试。

设置断点后,一种调试方法是在def main() 或模块主体中编写函数调用,然后按下 按钮。

是否可以从控制台启动函数的调试会话及其参数? (就像在 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 项目:

然后我插入一个带有一些代码的新 .py 文件,并创建一些断点:

然后我右键单击代码上的某处,Debug As...->Python run

然后打开 2 个控制台,它们都不是 IPython。活动控制台名为[Debug console] proba.py。 在此控制台中键入命令不会使计算机执行它们。

还有其他可用的控制台,仅命名为 proba.py. 这个控制台是完全交互式的,虽然 它不是 IPython

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

第二次尝试

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

然后是 Python3(因为这是我需要的):

之后,我就有了一个可以正常工作的 IPython 控制台。

当我通过execfile执行文件时,会触发错误Failed to create input stream: Read timed out:

虽然单步执行代码似乎可行,但我无法从 IPython 控制台访问变量,尽管可以从变量视图访问它们:

【问题讨论】:

【参考方案1】:

实际上,是的,您可以在最新的 PyDev 版本中做到这一点。

您必须在首选项中启用它,如下所述:

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

(即:将控制台连接到调试会话)


编辑(与第二部分有关):

不幸的是,事情是这样的,这是意料之中的......您的代码在断点中被“阻塞”,因此当您处于此模式下的断点时,控制台无法回复您,也无法进行任何评估(您此时只能使用调试器监视/表达式),因此,想法是您使用控制台执行操作,然后如果您愿意,您可以添加断点,但您只能在离开时再次使用控制台断点。

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

【讨论】:

以上是关于PyDev:如何从控制台调用调试特定命令(带断点)?的主要内容,如果未能解决你的问题,请参考以下文章

pdb 调试+ PyCharm+PyDev 调试

从 Pycharm 控制台调用函数后进入调试模式

如何调试在 Eclipse 中本地运行的 Celery/Django 任务

python_pdb断点调试常用命令

硬核调试实操 | 手把手带你实现 Serverless 断点调试

如何在 Eclipse-PyDev 中更改控制台字体大小