相关疑难解决方法(0)

使用IPython逐步调试

根据我的阅读,有两种方法可以在Python中调试代码:

  • 使用传统的调试器,如pdbipdb.这支持诸如cfor continue,nfor step-over,sfor step-into等命令,但是你没有直接访问IPython shell,这对于对象检查非常有用.

  • 使用 IPython的通过嵌入代码中的一个IPython的壳.您可以这样做from ipython import embed,然后embed()在您的代码中使用.当您的程序/脚本命中一个embed()语句时,您将被放入一个IPython shell中.这允许使用所有IPython好东西对对象进行全面检查并测试Python代码.但是,在使用时,embed()您无法使用便捷的键盘快捷键逐步完成代码.

有没有办法结合两全其美?即

  1. 能够 使用方便的pdb/ipdb键盘快捷键逐步完成代码.
  2. 在任何此类步骤(例如,在给定语句上),都可以访问完整的IPython shell.

MATLAB中进行IPython调试:

这种类型的"增强调试"的一个例子可以在MATLAB中找到,用户总是可以完全访问MATLAB引擎/ shell,她仍然可以逐步完成代码,定义条件断点等.我与其他用户讨论的内容,这是人们在从MATLAB迁移到IPython时最想念的调试功能.

在Emacs和其他编辑器中进行IPython调试:

我不想让问题太具体,但我主要在Emacs工作,所以我想知道是否有任何方法可以将此功能纳入其中.理想情况下,Emacs(或编辑器)将允许程序员在代码的任何位置设置断点,并与解释器或调试器通信以使其停在您选择的位置,并在该位置引入完整的IPython解释器.

python debugging emacs ipython pdb

156
推荐指数
8
解决办法
9万
查看次数

如何在pydev中启用事后调试?

每当我的程序引发未处理的异常时我想让pydev进入交互式控制台模式,但我无法弄清楚如何做到这一点.如现在的行为,报告异常并立即终止该过程.

经过一番搜索,我发现了这个:http: //sourceforge.net/tracker/index.php? func = enter&aid = 3029746&group_id = 85796 &atid = 577332,建议使用pydevd.set_pm_excepthook()

但是,当我添加

import pydevd
pydevd.set_pm_excepthook()
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我得到一个例外:

This function is now replaced by GetGlobalDebugger().setExceptHook and is now controlled by the PyDev UI.')
DeprecationWarning: This function is now replaced by GetGlobalDebugger().setExceptHook and is now controlled by the PyDev UI.
Run Code Online (Sandbox Code Playgroud)

但:

GetGlobalDebugger().setExceptHook()
Run Code Online (Sandbox Code Playgroud)

似乎不起作用,GetGlobalDebugger()在全局命名空间中不存在.

python debugging pydev

5
推荐指数
1
解决办法
1151
查看次数

标签 统计

debugging ×2

python ×2

emacs ×1

ipython ×1

pdb ×1

pydev ×1