在Python中,如何使用追溯模块查找在哪里生成异常?

问题描述

我正在使用GTK + 3进行复杂的FOSS项目。生成流程图并尝试运行它时,它将产生以下错误'Page' object has no attribute 'get_flow_graph'

代码中列出了30个不同的文件,它们具有通用的“ ...对象没有属性...”异常,还有4个文件调用函数get_flow_graph()

所以我想弄清楚的是,正在生成该特定错误消息的30个文件中的哪个正在执行,最好是具有该功能的4个文件中的哪个首先导致了错误

我正在尝试使用Python的traceback模块找出具体在哪里生成异常。我想我已经弄清楚了正在调用最终导致错误函数文件,但是我似乎无法获得traceback模块来提供更多功能

例如,如果我像这样包装函数

try:
    fg = self.page.get_flow_graph()
except Exception:
    traceback.print_exc()

那我就得到

  File "<redacted>",line 66,in _popen
    fg = self.page.get_flow_graph()
AttributeError: 'Page' object has no attribute 'get_flow_graph'
'Page' object has no attribute 'get_proc'

作为输出。因此,我得到了原始异常,但遇到了一个新的get_proc错误,该错误无济于事,但显然与尝试使用traceback有关。

也许我没有将跟踪放置在正确的文件/位置中,或者我问得太多,但是我应该如何写它以找出原始AttributeError的实际堆栈跟踪? / p>

解决方法

使用

except AttributeError as e:
  print(e.__traceback__.tb_lineno)
  print(e.__traceback__.tb_frame)

相反,可以帮助您进一步吗? (真的问,不要讽刺)