当前位置: 首页 > 知识库问答 >
问题:

使用IPython进行分步调试

呼延学
2023-03-14

从我所读到的内容来看,Python中有两种调试代码的方法:

>

  • 使用传统调试器,如pdbipdb。它支持诸如C用于continuen用于step-overs用于step-inte等命令,但是您不能直接访问IPython shell,这对于对象检查非常有用。

    通过在代码中嵌入IPython shell来使用IPython。您可以从IPython导入嵌入,然后在代码中使用embed()。当您的程序/脚本命中embed()语句时,您将被放到IPython shell中。这允许使用IPython的所有优点来全面检查对象和测试Python代码。但是,当使用embed()时,您再也不能通过方便的键盘快捷键一步一步地查看代码了。

    有没有什么办法可以把两全其美的东西结合起来?即。

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

    这种类型的“增强调试”的一个例子可以在MATLAB中找到,在MATLAB中,用户始终拥有对MATLAB引擎/外壳的完全访问权,并且她仍然可以逐步地通过她的代码、定义条件断点等。从我与其他用户讨论的内容来看,这是人们在从MATLAB转到IPython时最怀念的调试特性。

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

  • 共有1个答案

    鄢松
    2023-03-14

    那么ipdb.set_trace()呢?在代码中:

    导入IPDB;ipdb.set_trace()

    更新:现在在Python 3.7中,我们可以编写breakpoint()。它的工作原理是一样的,但是它也服从PythonBreakpoint环境变量。这个特性来自于这个pep。

     类似资料:
    • 问题内容: 根据我的阅读,有两种方法可以在Python中调试代码: 使用传统的调试器,例如或。它支持诸如for ,for ,for等命令,但是您没有直接访问IPython shell的权限,这对于对象检查非常有用。 使用 IPython的 通过嵌入代码中的一个IPython的壳。您可以这样做,然后在您的代码中使用。当您的程序/脚本命中一条语句时,您将进入IPython shell。这允许使用所有I

    • 我正在使用Python(IPython 我有一个3000个唯一ID的数组,可以从API中提取数据,一次只能使用一个ID调用API。 我希望以某种方式同时拨打3组1000个电话,以加快速度。 最好的方法是什么? 提前感谢任何帮助!

    • 问题内容: 假设我有一个IPython会话,从中调用一些脚本: 有没有一种方法可以引入断点,从中可以从IPython检查工作区? 我记得在以前的IPython版本中可以做到这一点: 但是该子模块似乎不再可用。 假设我已经打开了IPython会话: 如何在我选择的位置停止程序并使用IPython检查我的工作区 ? 通常,我更喜欢不需要我预先指定行号的解决方案,因为我希望上面有多个这样的调用,而不必跟

    • RestTemplate文档中的Spring注意: 注意:从5.0开始,这个类处于维护模式,只接受微小的更改请求和bug。请考虑使用org.springframework.web.reactive.client.WebClient,它具有更现代的API,支持同步、异步和流场景。 https://docs.spring.io/spring-framework/docs/current/javadoc

    • 问题内容: 有什么方法可以使用AngularJS进行同步调用吗? AngularJS文档不是很明确,也不是为了找出一些基本内容而扩展。 在服务上: 问题答案: 不是现在。如果查看源代码(从2012年10月开始),您会发现对XHR open的调用实际上是硬编码为异步的(第三个参数为true): 您需要编写自己的执行同步调用的服务。通常,由于JavaScript执行的性质,您通常不需要执行此操作,最终

    • 我搜索了许多网站和文档,但异步调用使用的代码相同。但不确定为什么它不起作用。如果我错过了什么,有人能帮我吗?