Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以修改引发异常时pdb打印的内容吗?_Python_Python 3.x_Pdb - Fatal编程技术网

Python 我可以修改引发异常时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=输入 尝试: 打印输入 除值错误外: 打印错误 您还可以手动引发自己的异常,如本线程所示: 答案有好有坏 好的。当然,您可以抑制这些消息 现在坏答案开始

我运行:

当脚本抛出时,例如由于断言失败,pdb打印整个堆栈跟踪+一些无意义的样板文本:

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)