假设我写了一个函数,我想调试它。
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控制台访问变量,虽然可以从Variables视图访问它们:
答案 0 :(得分:3)
实际上,是的,你可以在最新的PyDev版本中做到这一点。
您必须在首选项中启用它,如下所述:
http://pydev.org/manual_adv_interactive_console.html#full-debug-support-in-interactive-console
(即:将控制台连接到调试会话)
编辑(与第2部分相关):
不幸的是,事情的方式,这是预期的...你的代码被阻止'在断点处,因此当你在这种模式下的断点处时,控制台无法回答你的任何评估(此时你只能使用调试器监视/表达式),所以,这个想法是您使用控制台执行操作然后如果需要可以添加断点,但只能在离开断点时再次使用控制台。
请注意,如果要在断点的上下文中使用交互式控制台,则另一种方法是选择堆栈帧(在调试视图中)>右键单击它> pydev>调试控制台(或者您也可以在调试视图中创建连接到调试会话的新控制台视图以获得相同的效果)。