当前位置: 首页 > 面试题库 >

在异常情况下启动IPython Shell

於德馨
2023-03-14
问题内容

当我的程序运行引发异常的行时,是否可以启动IPython Shell或提示?

我对引发异常的上下文,变量,作用域(和子作用域)最感兴趣。类似于Visual Studio的调试,当引发异常但未被任何人捕获时,Visual
Studio将停止并为我提供调用堆栈和每个级别存在的变量。

您是否认为有办法使用IPython获得类似的东西?

编辑:-pdb启动IPython时,该选项似乎并没有达到我想要的功能(或者也许我不知道如何正确使用它,这完全有可能)。我运行以下脚本:

def func():
    z = 2
    g = 'b'
    raise NameError("This error will not be caught, but IPython still"
                    "won't summon pdb, and I won't be able to consult"
                    "the z or g variables.")

x = 1
y = 'a'

func()

使用命令:

ipython -pdb exceptionTest.py

当出现错误时,它将停止执行,但是会给我一个IPython提示,在这里我可以访问脚本的全局变量,但不能访问函数func的局部变量。pdb仅在我直接在ipython中键入会导致错误的命令时调用,即raise NameError("This, sent from the IPython prompt, will trigger pdb.")

我不一定需要使用pdb,我只想访问内部的变量func

编辑2:
已经有一段时间了,IPython的-pdb选项现在可以按照我的意愿工作。这意味着当我引发异常时,我可以返回到范围func并读取其变量zg而没有任何问题。即使不设置该-pdb选项,也可以在交互模式下运行IPython,然后%debug在程序错误退出后调用magic函数-
这还将使您进入具有所有作用域的交互式ipdb提示符。


问题答案:

IPython v0.13的更新:

import sys
from IPython.core import ultratb
sys.excepthook = ultratb.FormattedTB(mode='Verbose',
     color_scheme='Linux', call_pdb=1)


 类似资料:
  • 问题内容: 在Java中,我们使用try catch块处理异常。我知道我可以像下面这样编写一个try catch块来捕获方法中抛出的任何异常。 但是Java中有什么方法可以让我在发生异常时获取一种称为的特定方法,而不是像上面的方法那样编写一个包罗万象的方法? 具体来说,当抛出异常(我的应用程序逻辑未处理)时,我想在Swing应用程序中显示一条用户友好的消息。 谢谢。 问题答案: 默认情况下,JVM

  • 我一直在试图确定如何检测点异常给定窗口异常。 更详细地说,我知道每个30天窗口是否包含异常。例如,窗口1从2009年1月1日开始,窗口2从2009年1月2日开始,依此类推。 现在我正试图利用这些知识来确定这些异常发生的日期。如果我在2009年5月1日至2009年8月1日期间出现异常,我的窗口将从2009年1月8日最后一天的窗口发出窗口信号,从2009年5日开始。 我只是不明白如何使用窗口找到出现异

  • 问题内容: 我正在学习使用Selenium(v2.20)来领先一些 即将使用它创建浏览器测试的程序员。我想在 陷阱到达之前发现它们,而我却跌入了一个陷阱。 当我创建ChromeDriver时,它始终会弹出“ Google Chrome EULA”并 显示两个按钮:“接受并运行”和“取消”。因为我希望这是一个 自动化测试,所以让用户单击按钮是不可能的。 我查看了Chromium CommandSwi

  • 我已经将Java项目从Eclipse导出为“可运行的JAR文件”,并带有“将所需库提取到生成的JAR中”。当我尝试通过双击启动它时,什么也没有发生,只是文件闪烁。当我尝试像那样从终端运行它时,它工作得很好。

  • 你好,我正在学习OOP,通过编写一个虚拟的库管理项目在Java。 在serachBook()中,如果在ArrayList中找到book,则返回book对象,如果未找到,则抛出自定义异常BookNotFound。 问题1:它应该只返回null并在调用代码时检查返回值是否为null,还是抛出自定义异常BookNotFound。 目前我认为BookNotFinder是合适的,并且目前正在这样做。然而,我

  • org.springframework.boot.autoconfigure.web.servlet.error.errorMVCautoConfiguration需要一个类型为“org.springframework.boot.autoconfigure.web.servlet.dispatcherServletPath”的bean。 pom.xml: http://maven.apache.o