草庐IT

Python 捕获任何异常,并使用变量值打印或记录回溯

当我使用sys.excepthook发现意外错误时importsysimporttracebackdefhandleException(excType,excValue,trace):print'error'traceback.print_exception(excType,excValue,trace)sys.excepthook=handleExceptionh=1k=0printh/k这是我得到的输出errorTraceback(mostrecentcalllast):File"test.py",line13,inprinth/kZeroDivisionError:integer

python - 如何在gevent中捕获回溯

我生成了一个Greenlet并将其链接到一个可调用对象。一段时间后,Greenlet因异常而失败。链接的可调用对象被调用。太好了!问题是:如您所料,异常的回溯出现在我的控制台上。但我想在链接的可调用对象中处理该回溯。我如何在链接的可调用对象中访问该回溯?(我的第一直觉是使用traceback.extract_stack(),但事实证明它为链接的可调用对象本身提供了回溯,而不是为异常提供了回溯。) 最佳答案 当Greenlet死亡时,traceback有意不被保存。如果它被保存,它会使许多预计将被删除的对象保持事件状态,这在对象管理某

Android - 打印完整的异常回溯到日志

我有一个抛出异常的try/catchblock,我想在Android设备日志中查看有关该异常的信息。我从我的开发计算机上用这个命令读取了移动设备的日志:/home/dan/android-sdk-linux_x86/tools/adbshelllogcat我先尝试了这个:try{//codebuggycode}catch(Exceptione){e.printStackTrace();}但这不会在日志中打印任何内容。很遗憾,因为它会有很大帮助。我取得的最好成绩是:try{//codebuggycode}catch(Exceptione){Log.e("MYAPP","exception

Android - 打印完整的异常回溯到日志

我有一个抛出异常的try/catchblock,我想在Android设备日志中查看有关该异常的信息。我从我的开发计算机上用这个命令读取了移动设备的日志:/home/dan/android-sdk-linux_x86/tools/adbshelllogcat我先尝试了这个:try{//codebuggycode}catch(Exceptione){e.printStackTrace();}但这不会在日志中打印任何内容。很遗憾,因为它会有很大帮助。我取得的最好成绩是:try{//codebuggycode}catch(Exceptione){Log.e("MYAPP","exception

python - 使用 Python 代码覆盖工具理解和修剪大型库的回溯源代码

我的项目目标是低成本、低资源的嵌入式设备。我依赖于一个相对庞大且庞大的Python代码库,我对其API的使用非常具体。我很想通过在NedBatchelder的coverage或figleaf等覆盖工具中执行我的测试套件,将这个库的代码修剪到最低限度,然后在各种模块/文件中编写脚本删除未使用的代码。这不仅有助于理解库的内部结构,还有助于更轻松地编写任何补丁。Ned在他的一次在线演讲中实际上提到了使用覆盖工具对复杂代码进行“逆向工程”。我向SO社区提出的问题是,人们是否有以这种方式使用覆盖工具的经验并且他们不介意分享?有什么陷阱?覆盖工具是个不错的选择吗?还是花时间在figleaf上会更好

python - 回溯显示直到装饰器

这个漂亮的小Python装饰器可以配置禁用装饰函数:enabled=get_bool_from_config()defrun_if_enabled(fn):defwrapped(*args,**kwargs):try:returnfn(*args,**kwargs)ifenabledelseNoneexceptException:log.exception('')returnNonereturnwrapped唉,如果在fn()中引发异常,回溯只会显示到包装器:Traceback(mostrecentcalllast):File"C:\my_proj\run.py",line46,inw

python - 无一异常(exception)地获取 python 回溯

假设您有这些模块:模块1.pyimportmodule2defa():module1.b()defc():print"Higuys!"模块2.pyimportmodule1defb():module1.c()我想要一个函数func(a())产生与此类似的输出:(=atraceback?)/usr/local/lib/python2.7/dist-packages/test/module1.py3defa():4module1.b()1importmodule1/usr/local/lib/python2.7/dist-packages/test/module2.py3defb():4m

python - 为什么需要显式删除 sys.exc_info() 回溯?

我在不同的代码库中看到过,只是在PyMOTW上阅读(请参阅第一个注释here)。解释说,如果将回溯分配给sys.exc_info()[2]中的变量,将创建一个循环,但这是为什么呢?这个问题有多大?我是否应该在我的代码库中搜索exc_info的所有用途并确保删除回溯? 最佳答案 Python3(对原始答案的更新):在Python3中,问题中引用的建议已从Python文档中删除。我的原始答案(如下)仅适用于在其文档中包含引用的Python版本。Python2:Python垃圾收集器最终会找到并删除循环引用,例如通过从其中一个堆栈帧本身引

python - PyQt:退出时没有错误消息(回溯)

我的PyQt应用程序不再将错误(stderr?)打印到控制台。我使用QtDesigner并像这样导入UI:fromPyQt5importQtCore,QtGui,QtWidgetsimportsysfromPyQt5.uicimportloadUiTypeUi_MainWindow,QMainWindow=loadUiType("test.ui")classMain(QMainWindow,Ui_MainWindow):"""Mainwindow"""def__init__(self,parent=None):super(Main,self).__init__(parent)self.

python - Django:为什么我在运行 LiveServerTestCase 测试时无法获得回溯(以防出错)?

我正在用Selenium编写一些测试。当我运行我的selenium测试(LiveServerTestCase类型)并且我的代码有一些错误(不是在测试中,我的意思是在执行的代码中,就像我用selenium到达的主页View)即使我有:DEBUG=TrueINTERNAL_IPS=('127.0.0.1',)我一直坚持这一点,我不明白为什么我的测试失败了(因为在public500中我没有显示异常)。为什么会这样?我在哪里可以解决问题?当我运行runserver时,它运行良好(我得到了回溯)。 最佳答案 来自django文档https:/