调用堆栈和堆栈跟踪有啥区别?
Posted
技术标签:
【中文标题】调用堆栈和堆栈跟踪有啥区别?【英文标题】:What is the difference between Call Stack and Stack Trace?调用堆栈和堆栈跟踪有什么区别? 【发布时间】:2011-11-20 21:47:02 【问题描述】:术语“调用堆栈”和“堆栈跟踪”有什么区别?
【问题讨论】:
不能说我自己没想到这一点 大约 3 个字母? 【参考方案1】:调用堆栈通常是“当前的操作堆栈” - 即在它运行时。
堆栈跟踪通常是调用堆栈的副本,它会在某种故障时记录下来,例如一个例外。
换句话说,当您在调试时,您将查看当前调用堆栈 - 但是当您查看日志时,您将获得堆栈跟踪。至少,这是我对这些术语的解释:)
【讨论】:
我认为堆栈跟踪就像您在调用堆栈中的进度的结果(试图想出一个更好的词)?还是说错了? @AndyC:我不确定我理解“调用堆栈的进展”是什么意思。 嗯,那我可能错了(或者我真的不擅长解释:))。有点像如果调用堆栈是您要通过应用程序的路线,那么堆栈跟踪会显示您到目前为止的工作情况? @Jon :所以如果我说:“调用堆栈是指一个正在进行的进程,而‘堆栈跟踪’是指一个失败进程的日志”我是对的吗? @pencilCake:嗯,你可以得到一个堆栈跟踪,而不会总是失败 - 即使有失败,它也可能比整个过程失败更本地化- 但我认为这是正确的。【参考方案2】:调用堆栈是一种数据结构,用于存储有关正在运行的程序中活动子程序的信息。 堆栈跟踪是调用堆栈的表示。
【讨论】:
【参考方案3】:我认为***在区分它们方面做得相当好:
调用堆栈是一种堆栈数据结构,用于存储有关计算机程序的活动子例程的信息
堆栈跟踪是程序执行期间某个时间点的活动堆栈帧的报告。
换句话说,调用堆栈是内存中的实际数据结构,而堆栈跟踪是所述数据结构的快照。
【讨论】:
以上是关于调用堆栈和堆栈跟踪有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章