调用堆栈和堆栈跟踪有什么区别?

问题描述:

术语“调用堆栈”和“堆栈跟踪”之间有什么区别?调用堆栈和堆栈跟踪有什么区别?

+0

不能说我自己也没有想过这个 –

+2

大约3个字母? tongueincheek> – Amber

调用堆栈通常是“当前操作栈” - 即当它正在运行时。

堆栈跟踪通常是在某种失败时记录的调用堆栈的副本,​​例如,一个例外。

换句话说,当你在调试的时候你会看看当前的调用堆栈 - 但是当你查看日志时,你会得到一个堆栈跟踪。至少,这是我对术语的解释:)

+0

我认为堆栈跟踪就像调用堆栈中的进度结果(试图想一个更好的词)?或者那是错的? – AndrewC

+0

@AndyC:我不确定我了解“沿着调用堆栈进展”的含义。 –

+0

嗯,我有可能错误然后(要么,或者我真的不好解释:))。如果调用堆栈是您要通过应用程序访问的路由,那么堆栈跟踪会显示您迄今为止的工作情况? – AndrewC

调用堆栈是一种数据结构,存储有关正在运行的程序中的活动子例程的信息。 堆栈跟踪是调用堆栈的表示形式。

我认为*在它们之间的区别做了相当不错的工作:

调用堆栈是一个堆栈数据结构,用于存储有关计算机程序

的积极子程序一个堆栈跟踪信息在程序执行期间的某个时间点的活动堆栈帧的报告。

换句话说,调用堆栈是内存中的实际数据结构,而堆栈跟踪是所述数据结构的快照。

+3

+1为“快照” – pencilCake