如何在Python中实现调试控制台?

Tar*_*aal 10 python debugging interactive

我见过几个提供调试控制台的Python IDE(例如PyDev Extensions,WingIDE) - 一个在断点所在方法的上下文中运行的交互式终端.这使您可以打印成员,调用其他方法并查看结果,并重新定义方法以尝试修复错误.凉.

谁能告诉我这是如何实现的?我知道有代码模块,它提供了一个InteractiveConsole类,但我不知道如何在当前加载的代码的上下文中运行它.我是Python的新手,所以温和的帮助将不胜感激!

Joh*_*uhy 6

您可以尝试查看python调试器pdb.它就像你使用它的gdb,但是在纯python中实现.在python安装目录中查看pdb.py.


Tar*_*aal 3

是的,我很惭愧地承认它实际上在 InteractiveConsole 的文档中。您可以通过将 locals() 函数的结果传递给 InteractiveConsole 构造函数来使其在本地上下文中运行。我找不到在不终止应用程序的情况下关闭 InteractiveConsole 的方法,因此我将其扩展为在捕获 SystemExit 异常时仅关闭控制台。我不喜欢这样,但我还没有找到更好的方法。

这是一些(相当简单的)示例代码,演示了调试控制台。

import code

class EmbeddedConsole(code.InteractiveConsole):
    def start(self):
        try:
            self.interact("Debug console starting...")
        except:
            print("Debug console closing...")

def print_names():
    print(adam)
    print(bob)

adam = "I am Adam"
bob = "I am Bob"

print_names()
console = EmbeddedConsole(locals())
console.start()
print_names()
Run Code Online (Sandbox Code Playgroud)