gpt4 book ai didi

ruby - 堆栈跟踪和回溯有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:44 25 4
gpt4 key购买 nike

我真的以为我可以在网上找到答案,但我找不到。有什么区别吗?人们说“回溯”是在抛出异常时生成的,而堆栈跟踪是从应用程序启动到抛出异常点的方法调用列表。如果我们假设堆栈跟踪是一个数组,那么最后一个元素就是抛出异常的方法。回溯会是相反的情况吗?例如,在像 Ruby 这样的编程语言中,如果我们有:

begin
raise 1
rescue
p $!.backtrace ; p caller(0) #=> displays the back-trace, then the stack-trace
end

它们将输出 2 个不同的数组,这对我来说表明它们有一些根本不同的东西。

最佳答案

“回溯”、“堆栈跟踪”、“堆栈回溯”等是同一事物的名称。 “Backtrace”很可能来自同名的 Linux 工具。堆栈跟踪不仅仅指异常 - 程序调用堆栈的当前状态始终可以显示为堆栈跟踪(backtrace 可以,但许多调试器 View 和工具也是如此)。在异常或错误期间输出堆栈跟踪很有帮助。

编辑:哎呀,以为我仍然在“C”标签中 - 但查看文档时,Exception.backtrace 和 caller 都应该保存数组,其中调用堆栈的顶部是数组中的第一个。它们的深度和一些格式看起来有所不同。

关于ruby - 堆栈跟踪和回溯有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com