gpt4 book ai didi

python - 总是在异常时调用 python 调试器的好通用方法

转载 作者:太空狗 更新时间:2023-10-30 02:21:24 25 4
gpt4 key购买 nike

我想让我的调试器在遇到异常时运行 post_mortem()不必修改我正在处理的源代码。我看到很多示例涉及将代码包装在 try/except block 中,但我希望它始终运行,无论我在做什么。

我开发了一个 python 包装器脚本,但它变得丑陋而且几乎无法使用。

我使用 pudb ,它的 API 等效于 pdb,因此可以使用特定于 pdb 的答案。我从我的编辑器 (vim) 中运行代码,并希望在遇到异常时随时出现 pm。

最佳答案

我花了几个月的时间什么也没做,但我偶然发现了一个解决方案。我敢肯定,对于更有经验的人来说,这并不是什么新鲜事。

我的环境中有以下内容:

export PYTHONUSERBASE=~/.python
export PYTHONPATH=$PYTHONPATH:$PYTHONUSERBASE

我有以下文件:

~/.python/lib/python2.7/site-packages/usercustomize.py

内容如下:

import traceback
import sys

try:
import pudb as debugger
except ImportError:
import pdb as debugger

def drop_debugger(type, value, tb):
traceback.print_exception(type, value, tb)
debugger.pm()

sys.excepthook = drop_debugger

__builtins__['debugger'] = debugger
__builtins__['st'] = debugger.set_trace

现在,无论是交互方式还是其他方式,调试器总是会在出现异常时跳入。让它更聪明一些可能会很好。

请务必确保您的 site-packages 中没有 no-global-site-packages.txt。这将使用默认的 site.py 禁用 usercustomize 模块(我的 virtualenv 有一个 no-global-site-packages.txt)

为了防止对其他人有帮助,我保留了修改 __builtins__ 的内容。我发现始终能够依赖某些可用的工具非常方便。

调味。

关于python - 总是在异常时调用 python 调试器的好通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com