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

错误时自动启动python调试器

闻人浩波
2023-03-14
问题内容

这是我很长时间以来一直想知道的一个问题,但是我从未找到合适的解决方案。如果我运行了一个脚本,但遇到了一个IndexError,则说是python打印错误的行,位置和快速描述,然后退出。遇到错误是否可以自动启动pdb?我不反对在文件顶部添加额外的import语句,也不反对添加几行代码。


问题答案:

您可以使用traceback.print_exc打印异常跟踪。然后使用sys.exc_info提取回溯,最后使用该回溯调用pdb.post_mortem

import pdb, traceback, sys

def bombs():
    a = []
    print a[0]

if __name__ == '__main__':
    try:
        bombs()
    except:
        extype, value, tb = sys.exc_info()
        traceback.print_exc()
        pdb.post_mortem(tb)

如果您要使用产生异常的框架的局部语言使用code.interact启动交互式命令行,则可以执行

import traceback, sys, code

def bombs():
    a = []
    print a[0]

if __name__ == '__main__':
    try:
        bombs()
    except:
        type, value, tb = sys.exc_info()
        traceback.print_exc()
        last_frame = lambda tb=tb: last_frame(tb.tb_next) if tb.tb_next else tb
        frame = last_frame().tb_frame
        ns = dict(frame.f_globals)
        ns.update(frame.f_locals)
        code.interact(local=ns)


 类似资料:
  • 问题内容: 尝试在ipython Notebook中使用Selenium打开Firefox时出现错误。我环顾四周,发现了类似的错误,但没有与我得到的错误完全匹配的错误。有人知道问题可能是什么以及我如何解决?我正在使用Firefox 22。 我输入的代码如下: 代码返回的错误如下: 问题答案: 尝试在初始化时指定Firefox二进制文件 FirefoxDriver查找的默认路径为。参见Firefox

  • 我在启动spring boot应用程序时遇到以下错误。这是我的第一个spring boot项目。因此,我不确定错误以及如何修复它。 申请启动失败 描述: 配置为侦听端口8080的Tomcat连接器无法启动。端口可能已在使用中,或者连接器可能配置错误。 行动: 验证连接器的配置,识别并停止在端口8080上侦听的任何进程,或者将此应用程序配置为在另一个端口上侦听。

  • 问题内容: 我刚刚尝试使用Homebrew(在Mac OS X 10.6上)安装MySQL,但是遇到了第一个障碍。尝试手动启动服务器(mysql.server start)时,出现以下错误: 不幸的是,我不确定要检查哪些错误日志或配置文件,因为我以前从未以这种方式安装过MySQL。 问题答案: 通过自制软件安装时,我遇到了同样的问题。确保运行以下命令(安装过程中列出了这些命令,但很容易错过):

  • 问题内容: 我想在Apache Spark中启用单个集群,我安装了java和scala。我下载了Apache Hadoop 2.6的火花并解压缩。我试图转动火花壳,但抛出一个错误,此外,我无权访问shell中的sc。我从源代码编译,但存在相同的错误。我究竟做错了什么? 问题答案: 我刚刚开始学习Spark,希望在本地模式下运行Spark。我遇到了像你这样的问题。问题: java.net.BindE

  • **Visual Studio 2019开发者命令提示符v16。4.0**版权所有(c)2019年微软公司 C:\Users\asdf\Desktop\scratch3\create react app\docusaurus\website @start C:\用户\asdf\桌面\划痕3\创建-反应-应用程序\docusaurn\网站docusauron启动 “docusaurus”不被识别为内

  • 我发现了这个,结果是windows 10上的pm2问题。 那篇文章末尾建议的变通办法似乎很管用。 基本上,首先安装node-cmd,然后创建一个startscript.js: