在出现错误/异常时显示有助于清除错误的信息

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>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置