dar*_*mkd 12 ruby stack-trace backtrace
我真的虽然在网上找到答案,但我不能.有什么不同吗?人们说在抛出异常时会产生"回溯",而堆栈跟踪则是从应用程序启动时到抛出异常的点的方法调用列表.如果我们将堆栈跟踪视为数组,则最后一个元素将是抛出异常的方法.回溯的情况是否相反?例如,在像Ruby这样的编程语言中,如果我们有:
begin
raise 1
rescue
p $!.backtrace ; p caller(0) #=> displays the back-trace, then the stack-trace
end
Run Code Online (Sandbox Code Playgroud)
他们将输出2个不同的阵列,这对我来说,他们有一些根本不同的东西.
Ada*_*iuk 11
"Backtrace","堆栈跟踪","堆栈回溯"等是同一事物的名称."Backtrace"特别可能来自同名的Linux工具.堆栈跟踪不仅仅涉及异常 - 程序调用堆栈的当前状态始终可以显示为堆栈跟踪(回溯可以,但许多调试器视图和工具也是如此).在异常或错误期间输出堆栈跟踪非常有用.
编辑:哎呀,以为我还在'C'标签 - 但是看看文档,Exception.backtrace和调用者都应该保持数组,其中调用堆栈的顶部是数组中的第一个.它们的深度和格式存在差异.