小编典典

使用 IPython 逐步调试

all

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

  • 使用传统的调试器,例如pdbipdb。这支持诸如cfor continuenfor step-oversforstep-into等命令),但您无法直接访问 IPython shell,这对于对象检查非常有用。

  • 通过在代码中嵌入IPython shell 来使用 IPython 。* 你可以做,然后在你的代码中使用。当您的程序/脚本遇到语句时,您将被放入 IPython shell。这允许使用所有 IPython 好东西来全面检查对象和测试 Python 代码。但是,在使用时,您不能再使用方便的键盘快捷键 逐步完成代码。from IPython import embed``embed()``embed()``embed() *

有什么方法可以结合两全其美?IE

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

MATLAB中进行IPython 调试:

可以在 MATLAB 中找到此类“增强调试”的示例,其中用户 始终 可以完全访问 MATLAB 引擎/shell,并且她仍然可以 逐步
完成她的代码、定义条件断点等。我和其他用户讨论过的,这是人们从 MATLAB 迁移到 IPython 时最怀念的调试功能。

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

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


阅读 91

收藏
2022-07-12

共1个答案

小编典典

你可以使用 IPython
%pdb魔法。只需%pdb在 IPython 中调用,当发生错误时,您会自动下降到ipdb. 虽然您没有立即采取措施,但您在ipdb之后。

这使得调试单个函数变得容易,因为您可以加载一个文件%load然后运行一个函数。assert您可以在正确的位置强制错误。

%pdb是线魔法。将其称为%pdb on%pdb 1或。如果在没有参数的情况下调用它,它将作为切换。%pdb off``%pdb 0

2022-07-12