Call Stack和Stack Trace有什么区别?

时间:2011-09-20 08:59:46

标签: .net visual-studio stack-trace callstack

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

3 个答案:

答案 0 :(得分:28)

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

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

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

答案 1 :(得分:11)

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

答案 2 :(得分:10)

我认为维基百科在区分它们方面做得相当不错:

  

调用堆栈是一种堆栈数据结构,用于存储有关计算机程序的活动子例程的信息

     

堆栈跟踪是在执行程序期间某个时间点的活动堆栈帧的报告。

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