在出现错误/异常时显示有助于清除错误的信息
tbdump的Python项目详细描述
tbdump包
tbdump-在出现错误/异常时显示清除错误的有用信息
说明
这个手动页面文档tbdump模块,一个显示 当python 由于错误或陷阱,解释器被中止。
python在出现错误(例如
异常和执行程序的源代码的行号
已终止。tbdump替换python的钩子sys.excepthook
将在发生异常时调用,以便获得更详细的信息
在程序状态(即发生异常的位置,所有
变量和对象及其在范围中定义的属性
对调试有很大帮助。
另外,在异常处,tbdump调用pdb,python调试器。所以,你 可以使用许多pdb调试器自由检查程序的状态 命令。
示例
默认情况下,python很少告诉您这个错误。
测试.py:
importsysfromcollectionsimportnamedtupleRecord=namedtuple('Record','name year size note')x=Record('John',2019,123,'Good')y=Record('Mike',2018,456)
$ python3 test.py Traceback (most recent call last): File "test.py", line 6, in <module> y= Record('Mike', 2018, 456) TypeError: __new__() missing 1 required positional argument: 'note'
使用tbdump,可以获得详细信息。
test-tbdump.py:
importsysfromcollectionsimportnamedtupleimporttbdumpRecord=namedtuple('Record','name year size note')x=Record('John',2019,123,'Good')y=Record('Mike',2018,456)
$ python3 test-tbdump.py ---- <module> test-tbdump.py 4 import tbdump 56Record= namedtuple('Record', 'name year size note')7x= Record('John', 2019, 123, 'Good')8y= Record('Mike', 2018, 456)Record= <class '__main__.Record'> _asdict <function Record._asdict at 0x7f31ee2ff400> _fields ('name', 'year', 'size', 'note') _fields_defaults {} _make <classmethod object at 0x7f31ee55dc18> _replace <function Record._replace at 0x7f31ee2ff2f0> name <property object at 0x7f31efa665e8> note <property object at 0x7f31ee2eac78> size <property object at 0x7f31ee2eac28> year <property object at 0x7f31efa66638> __doc__ 'Record(name, year, size, note)' __getnewargs__ <function Record.__getnewargs__ at 0x7f31ee2ff488> __module__ '__main__' __new__ <staticmethod object at 0x7f31ee2fe320> __repr__ <function Record.__repr__ at 0x7f31ee2ff378> __slots__ ()namedtuple= <function namedtuple at 0x7f31efa519d8> sys= ... tbdump= <module 'tbdump' from '/pub/home/ohsaki/lib/python/tbdump.py... _print <function _print at 0x7f31efa51598> linecache <module 'linecache' from '/usr/local/stow/python/lib... main <function main at 0x7f31ee2ff1e0> pdb <module 'pdb' from '/usr/local/stow/python/lib/pytho... print_exc <function print_exc at 0x7f31ee2ff158> print_tb <function print_tb at 0x7f31ee2ff0d0> sys <module 'sys' (built-in)> term <module 'ansiterm' from '/usr/local/stow/python/lib/... traceback <module 'traceback' from '/usr/local/stow/python/lib... trimmed_str <function trimmed_str at 0x7f31ee2ff048> __builtins__ {'__name__': 'builtins', '__doc__': "Built-in functi... __cached__ '/pub/home/ohsaki/lib/python/__pycache__/tbdump.cpyt... __doc__ None __file__ '/pub/home/ohsaki/lib/python/tbdump.py' __loader__ <_frozen_importlib_external.SourceFileLoader object ... __name__ 'tbdump' __package__ '' __spec__ ModuleSpec(name='tbdump', loader=<_frozen_importlib_... x= Record(name='John', year=2019, size=123, note='Good')__annotations__={}__builtins__= ... __cached__= None __doc__= None __file__='/tmp/4.py'__loader__= <_frozen_importlib_external.SourceFileLoader object at 0x7f3... name '__main__' path '/tmp/4.py'__name__='__main__'__package__= None __spec__= None TypeError: __new__() missing 1 required positional argument: 'note' > test-tbdump.py(8)<module>() -> y= Record('Mike', 2018, 456)(Pdb)
您现在在pdb调试器中。您可以检查内部:
(Pdb) x Record(name='John', year=2019, size=123, note='Good')(Pdb) x.name 'John'(Pdb) Record <class '__main__.Record'> (Pdb) list 34 import tbdump 56Record= namedtuple('Record', 'name year size note')7x= Record('John', 2019, 123, 'Good')8 -> y= Record('Mike', 2018, 456)[EOF](Pdb)
安装
pip3installtbdump
可用性
最新版本的tbdump模块可在 pypi(https://pypi.org/project/tbdump/)。
另请参见
pdb-python调试器(https://docs.python.org/3.7/library/pdb.html)
回溯-打印或检索堆栈回溯(https://docs.python.org/3.7/library/traceback.html)
作者
Hiroyuki Ohsaki<;Ohsaki[atmark]lsnl.jp>;