代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

同时使用调试器和诅咒?

  •  10
  • Matt Joiner  · 技术社区  · 15 年前

    我打电话来 python -m pdb myapp.py 当一个异常触发时,我通常会被回传给pdb解释器来调查这个问题。不过,这个异常是在我调用完之后抛出的 curses.wrapper() 进入诅咒模式,使得pdb解释器无法使用。我该怎么解决这个问题?

    3 回复  |  直到 9 年前
        1
  •  9
  •   Noufal Ibrahim    14 年前

    詹姆斯的回答很好,我已经投了反对票,但我也会考虑尝试拆分程序的逻辑层和表示层。将诅咒部分放在库的顶部,编写一个简单的驱动程序,调用正确的例程来重新创建错误。然后你可以潜入水中做必要的事。

    我能想到的另一种方法是创建一个名为 debug 或者是一些将您抛回常规屏幕并调用PDB的东西。然后把它放在引发异常的代码之前,运行您的程序。类似的东西

    def debug(stdscr):
        curses.nocbreak()
        stdscr.keypad(0)
        curses.echo()
        curses.endwin()
        import pdb; pdb.set_trace()
    

    显然,这与 curses.wrapper 功能。在 http://www.amk.ca/python/howto/curses/ .

        2
  •  7
  •   James Morris    15 年前

    不熟悉python,这可能不是您想要的。但显然,winpdb可以附加到脚本上,就像gdb可以附加到正在运行的进程(IIUC)上一样。

    http://winpdb.org/docs/launch-time/

    不要被这个名字误导,它是平台独立的。

        3
  •  0
  •   杨耀飞    9 年前

    用毕克林

    你可以使用 pyclewn 带VIM。 或者使用pdb克隆,这是pyclewn的核心 它很好,就像gdb一样,可以远程调试