Python 我可以修改引发异常时pdb打印的内容吗?
我运行: 当脚本抛出时,例如由于断言失败,pdb打印整个堆栈跟踪+一些无意义的样板文本:Python 我可以修改引发异常时pdb打印的内容吗?,python,python-3.x,pdb,Python,Python 3.x,Pdb,我运行: 当脚本抛出时,例如由于断言失败,pdb打印整个堆栈跟踪+一些无意义的样板文本: python -m pdb script_that_throws.py 有没有办法做到这一点呢?如果能知道\u throws.py的脚本是什么,那就太好了。您是否尝试在脚本中使用try和except?这可以帮助您处理pdb异常以打印所需内容。像这样: n=输入 尝试: 打印输入 除值错误外: 打印错误 您还可以手动引发自己的异常,如本线程所示: 答案有好有坏 好的。当然,您可以抑制这些消息 现在坏答案开始
python -m pdb script_that_throws.py
有没有办法做到这一点呢?如果能知道\u throws.py的脚本是什么,那就太好了。您是否尝试在脚本中使用try和except?这可以帮助您处理pdb异常以打印所需内容。像这样: n=输入 尝试: 打印输入 除值错误外: 打印错误 您还可以手动引发自己的异常,如本线程所示:
答案有好有坏 好的。当然,您可以抑制这些消息 现在坏答案开始起作用了 您必须更改cpython源代码,并重新编译它 这并不像一开始听起来那么难,尤其是因为pdb是一个Python模块,不需要C知识 这是源代码的重要部分: 关于如何编译Python,有很多优秀的文档: 另外,Anthony Shaw刚刚出版了一本书,该书很好地介绍了如何使用Python语言的C实现cpython 以防万一,您希望得到不同类型的答案,不,PDB没有用于抑制此类消息的配置选项
Traceback (most recent call last):
File "/usr/lib/python3.6/pdb.py", line 1667, in main
pdb._runscript(mainpyfile)
File "/usr/lib/python3.6/pdb.py", line 1548, in _runscript
self.run(statement)
File "/usr/lib/python3.6/bdb.py", line 434, in run
exec(cmd, globals, locals)
File "<string>", line 1, in <module>
[... many lines of stack trace omitted for brevity ...]
File "/path/to/script_that_throws.py", line 26, in _ul
assert v.keys() == self._expected_keys
AssertionError
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /path/to/script_that_throws.py(26)_ul()
-> assert v.keys() == self._expected_keys
(Pdb)
AssertionError
> /path/to/script_that_throws.py(26)_ul()
-> assert v.keys() == self._expected_keys
(Pdb)