据我所知,在Python中有两种调试代码的方法:
使用诸如pdb
或ipdb
的传统调试器。它支持诸如__abc2(用于__abc3)、__abc4(用于__abc5)、__abc6(用于__abc7)等命令,但是您不能直接访问IPython shell,后者对于对象检查非常有用。
使用IPython IPython shell.您可以执行from IPython import embed
,然后在代码中使用embed()
。当您的程序/脚本命中embed()
语句时,您将被拖入IPython shell.这允许使用所有IPython工具全面检查对象和测试Python代码。但是,在使用embed()
时,您不能再使用方便的键盘快捷键通过代码按部就班。
有没有什么办法可以两全其美呢?即
这种类型的“增强调试”的示例可以在MATLAB中找到,其中用户总是具有对MATLAB引擎/外壳的完全访问,并且她仍然可以通过她的代码按部就班,定义条件断点等。从我与其他用户的讨论来看,这是人们在从MATLAB迁移到IPython时最怀念的调试功能。
我不想把这个问题问得太具体,但我主要使用Emacs,所以我想知道是否有办法将此功能引入其中。理想情况下,Emacs(或编辑器)将允许程序员在代码上的任何位置设置断点,并与解释器或调试器通信,以使其在您选择的位置停止,并在该位置提供完整的IPython解释器。