代码之家  ›  专栏  ›  技术社区  ›  rhettg

如何在python关闭时调试异常

  •  7
  • rhettg  · 技术社区  · 14 年前

    当进程结束时,我将输出到stderr,如下所示:

      Exception exceptions.TypeError: "'NoneType' object is not callable" in <function <lambda> at 0x5507d70> ignored
    

    我的理解是,这是由垃圾回收期间生成的异常引起的( 德尔 ()?)或我知道正在这个应用程序中使用的weakref回调。

    有什么方法可以找出这是从哪里来的?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Glenn Maynard    14 年前

    这里的问题与lambda无关:lambda函数

    a = lambda: 1
    print a.func_code.co_filename
    print a.func_code.co_firstlineno
    

    ( a.__code__ 在蟒蛇身上。)

    问题在于回退异常格式:它没有显示堆栈跟踪,而堆栈跟踪通常显示这些信息。

    如果您想改进这一点,问题似乎出在Python/errors.c的PyErr\u WriteUnraisable()中。我不知道是否有更深层次的问题使这件事变得困难,但我怀疑没有。在调用PyErr\u Fetch()之后,回溯应该在“tb”中。

        2
  •  7
  •   Jurgenfd    13 年前

    使用 因此,您可以看到在最后阶段的哪一点抛出异常。当我遇到同样的情况时,它帮助了我;还有炼金术。。。