在 Python 世界中,有两个术语似乎是相等的:
两者有什么区别吗?
Stacktrace
是方法调用堆栈的跟踪,与正在执行程序的计算机的内存中完全相同。
所以最近的方法调用位于顶部;问题的根源很可能也在顶层。
实际上所有编程语言都是这样做的。
Traceback
是Python“发明”的东西:它与上面的相反。因此,要找到问题的根源,您需要从底部开始阅读,因为这对于 Python 专家来说显然更容易阅读。
为了清楚起见,他们必须指定“最近一次通话最后一次”。
将“stacktrace”称为“traceback”是完全错误的:traceback 不是堆栈的跟踪。这是一个反向的堆栈跟踪:“后退”可能就是这个意思。
在堆栈的顶部,从任何意义上讲,您都拥有最新的项目。
Traceback 是惯用的 Python 术语(例如,traceback 模块),它通常与 stacktrace 互换使用,后者在其他语言(如 Java)中使用。
熟悉的
Traceback (most recent call last):
在 ceval.c 中开始其生命,于 1990 年 12 月 20 日提交 python/cpython#3f5da24ea,作为
Stack backtrace (innermost last):
接下来,在2000年之前的一段时间内,当它在提交python/cpython#6d10887cd和python/cpython#3bb1edb32中更改为当前版本时,用于读取的消息
Traceback (innermost last):
因为“后者对新手来说很神秘”而被更改。