用更精确的位置信息回溯

loctraceback的Python项目详细描述


想更准确地看到你在哪里或在回溯中的位置 callstack python代码在一行中有几个地方 出错了?即使代码是在运行时创建的 evalexec或者如果找不到源代码?

那么这个包裹是给你的。

此模块可以消除某些代码类型的歧义:

i/j/k# which divide?prev[prev[0]]# which prev ?[e[0]foriind[j]ifgot[i]==e[i]]# lots going on hereexec(some_code%10,namespace)# code at runtime

通过在示例中运行代码给出的一些示例输出::

分区示例:

Traceback(mostrecentcalllast):File"tb-div.py",line9,in<module>atoffset52a/b/ca/b/c-ZeroDivisionError:floatdivisionbyzero

列表理解示例:

File"tb-comp.py",line9,in<listcomp>atoffset18[e[0]foriind[j]ifgot[i]==e[i]]return[e[0]foriin.0ifgot[i]==e[i]]------IndexError:listindexoutofrange

exec示例:

Traceback(mostrecentcalllast):File"tb-exec.py",line11,in<module>atoffset39exec(s)exec(s)-------File"<string>",line4,in<module>atoffset18z=x/y-ZeroDivisionError:divisionbyzero

调用堆栈中的隔离函数示例:

File"call-fib.py",line8,infibatoffset58returnfib(n-1)+fib(n-2)returnfib(n-1)+fib(n-2)----------File"call-fib.py",line10,in<module>atoffset54print("fib({})={}".format(2,fib(2)))------

这些模块通过添加 片段反编译信息以获得更精确的位置信息。

尽管api来自python 3.6,但代码运行在3.3或更高版本上。 对其他python版本的后台移植留给 读者。

参见these slides了解 这背后的技术信息。

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

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?