Naprawdę chciałem znaleźć odpowiedź online, ale nie mogłem. Czy jest jakaś różnica? Ludzie mówią, że "śledzenie" jest generowane przy czymś, co rzuca wyjątek, podczas gdy ślad stosu jest listą wywołań metod od punktu, w którym aplikacja została uruchomiona do punktu, w którym wyjątek został zgłoszony. Jeśli mamy przypuszczalny ślad stosu jako tablicę, to ostatnim elementem będzie metoda, w której wyjątek został zgłoszony. Czy odwrotny przypadek byłby dla śladu wstecznego? W języku programowania Ruby, jak na przykład, jeśli mamy:Jaka jest różnica między śledzeniem stosu a śledzeniem wstecznym?
begin
raise 1
rescue
p $!.backtrace ; p caller(0) #=> displays the back-trace, then the stack-trace
end
Będą wyjściowe 2 różne tablice, co sugeruje mi, że coś fundamentalnie różni się o nich.
Linux prawie nie istniał, gdy Ruby został stworzony, wątpię, że jakiekolwiek terminy w Ruby pochodzą stąd. Ruby została utworzona w lutym 1993 roku, a Linux w lecie 1991 roku. SLS, pierwsza dystrybucja Linuksa miała zaledwie 5 miesięcy i była cholernie niebezpieczna, kiedy Ruby zaczęła. –
@ JörgWMittag Spekulacja z mojej strony i prawdopodobnie masz rację, ale to zależy od tego, kiedy Exception.backtrace został dodany w pierwszej kolejności. Jest bardziej prawdopodobne, że był popularnym terminem w tamtym czasie, ponieważ narzędzia GNU używają tego terminu (np. GDB i narzędzie backtrace, które istniało najpierw na systemie Unix). Tak jak mówiłem - tu przez przypadek! Jestem zaskoczony, że Ruby tak naprawdę jest stara. –
Założona 24 lutego 1993 r., Opublikowana w 1995 r., 1.0 w Boże Narodzenie 1996 r. –