Python:堆栈跟踪与回溯

问题描述 投票:0回答:3

在 Python 世界中,有两个术语似乎是相等的:

  • 堆栈跟踪
  • 回溯

两者有什么区别吗?

python terminology
3个回答
23
投票

Stacktrace
是方法调用堆栈的跟踪,与正在执行程序的计算机的内存中完全相同。 所以最近的方法调用位于顶部;问题的根源很可能也在顶层。 实际上所有编程语言都是这样做的。

Traceback
是Python“发明”的东西:它与上面的相反。因此,要找到问题的根源,您需要从底部开始阅读,因为这对于 Python 专家来说显然更容易阅读。 为了清楚起见,他们必须指定“最近一次通话最后一次”

将“stacktrace”称为“traceback”是完全错误的:traceback 不是堆栈的跟踪。这是一个反向的堆栈跟踪:“后退”可能就是这个意思。

在堆栈的顶部,从任何意义上讲,您都拥有最新的项目。


13
投票

Traceback 是惯用的 Python 术语(例如,traceback 模块),它通常与 stacktrace 互换使用,后者在其他语言(如 Java)中使用。


0
投票

熟悉的

Traceback (most recent call last):

在 ceval.c 中开始其生命,于 1990 年 12 月 20 日提交 python/cpython#3f5da24ea,作为

Stack backtrace (innermost last):

接下来,在2000年之前的一段时间内,当它在提交python/cpython#6d10887cdpython/cpython#3bb1edb32中更改为当前版本时,用于读取的消息

Traceback (innermost last):

因为“后者对新手来说很神秘”而被更改。

© www.soinside.com 2019 - 2024. All rights reserved.