我正在尝试创建一个调试器函数,当发生错误时调用该函数,让我可以访问控制台以便检查程序中发生的情况。 以下是基本功能:
def DEBUGGER(error):
print(error)
print("[DEBUGGER] Your program has failed, here is the debugger. Enter EXIT to end program.")
while True:
line = input(">>> ").lower()
if line == 'exit':
sys.exit(0)
else:
try:
exec(line)
except Exception as e:
print(str(e))
问题在于我无法输入像
print(var)
这样的内容,因为它在另一个函数中被引用。
全局函数对我没有帮助,因为我想能够调用程序中的任何变量,但我不能将它们全部设为全局变量。我知道可以通过将所有函数放入类中来解决它,但由于许多原因我不能这样做。有没有一种方法可以获取运行函数的局部变量?(当我调用
DEBUGGER()
时,母函数仍在运行)如果没有,我能否导出当前函数的局部变量并将其作为参数传递给
DEBUGGER()
?感谢您的回答。
locals()
怎么样? - midorpdb
模块专门用于这种调试。您不想使用它的特殊原因是什么? - Green Cloak Guytraceback
模块来完成这个任务,但是为什么要这样做呢?Python已经内置了调试器pdb
。 - Daniel Roseman