Jia*_*aro 12 python eclipse debugging breakpoints pydev
嘿,我想知道...我正在使用带有eclipse的pydev,我真的很享受强大的调试功能,但我想知道:
是否可以在eclipse中设置断点并在执行期间跳转到交互式python解释器?
我认为这将非常方便;)
编辑:我想强调一下,我的目标不是跳进调试器.pydev/eclipse有一个很好的调试器,我可以看看回溯并设置断点.
我想要的是在执行期间执行脚本并跳转到交互式python解释器,这样我就可以做...
我知道你可以使用调试器完成所有这些工作,但是我可以在交互式解释器中更快地完成它,因为我可以尝试一些东西,看到它不起作用,并尝试其他东西而不必让应用程序回到执行点那个代码又来了.
因此,从OP的问题大约一年后,PyDev内置了这个功能.我不确定这个功能何时推出,但我所知道的是我花了最后~2小时谷歌搜索......配置iPython等等(其中)看起来它会完成这项工作),但只是意识到Eclipse/PyDev有我想要的ootb.
一旦你在调试模式下遇到一个断点,控制台就在那里准备就绪并等待!我没有注意到这一点,因为没有提示或闪烁的光标; 我错误地认为这是一个标准的,仅限输出的控制台......但事实并非如此.它甚至还有代码完成功能.
很棒的东西,请参阅http://pydev.org/manual_adv_debug_console.html了解更多详情.
这是来自一个旧项目,我没有写它,但它做了类似于你想要使用ipython的东西.
'''Start an IPython shell (for debugging) with current environment.
Runs Call db() to start a shell, e.g.
def foo(bar):
for x in bar:
if baz(x):
import ipydb; ipydb.db() # <-- start IPython here, with current value of x (ipydb is the name of this module).
.
'''
import inspect,IPython
def db():
'''Start IPython shell with callers environment.'''
# find callers
__up_frame = inspect.currentframe().f_back
eval('IPython.Shell.IPShellEmbed([])()', # Empty list arg is
# ipythons argv later args to dict take precedence, so
# f_globals() shadows globals(). Need globals() for IPython
# module.
dict(globals().items() + __up_frame.f_globals.items()),
__up_frame.f_locals)
Run Code Online (Sandbox Code Playgroud)
由Jim Robert编辑(问题所有者):如果将上述代码放入my_debug.py为此示例而调用的文件中.然后将该文件放在python路径中,并且可以在代码中的任何位置插入以下行以跳转到调试器(只要从shell执行):
import my_debug
my_debug.db()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2975 次 |
| 最近记录: |