【问题标题】:What is the difference between Call Stack and Stack Trace?调用堆栈和堆栈跟踪有什么区别?
【发布时间】:2011-11-20 21:47:02
【问题描述】:

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

【问题讨论】:

  • 不能说我自己没想到这一点
  • 大约 3 个字母?

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


【解决方案1】:

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

堆栈跟踪通常是调用堆栈的副本,​​它会在某种故障时记录下来,例如一个例外。

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

【讨论】:

  • 我认为堆栈跟踪就像您在调用堆栈中的进度的结果(试图想出一个更好的词)?还是说错了?
  • @AndyC:我不确定我理解“调用堆栈的进展”是什么意思。
  • 嗯,那我可能错了(或者我真的不擅长解释:))。有点像如果调用堆栈是您要通过应用程序的路线,那么堆栈跟踪会显示您到目前为止的工作情况?
  • @Jon :所以如果我说:“调用堆栈是指一个正在进行的进程,而‘堆栈跟踪’是指一个失败进程的日志”我是对的吗?
  • @pencilCake:嗯,你可以得到一个堆栈跟踪,而不会总是失败 - 即使有失败,它也可能比整个过程失败更本地化- 但我认为这是正确的。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 2016-01-19
      • 2016-08-18
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多