W obliczeniowych , wykorzystując utwór wezwanie (ślad stosu, tor stos , backtrace stosu lub stos traceback w języku angielskim) jest reprezentacją wydajności baterii w pewnym momencie w czasie wykonania programu komputerowego .
Te deweloperzy powszechnie używać ślady połączenia podczas sesji debugowania interaktywnego lub pośmiertne. Użytkownicy końcowi mogą czasami zobaczyć ślady połączeń wyświetlane z komunikatem o błędzie, który użytkownik może następnie zgłosić programistom.
Śledzenie wywołania przechodzi wstecz przez sekwencję wywołań funkcji - do momentu, w którym jest generowany ślad wywołania. W scenariuszu sekcji zwłok sprowadza się to aż do funkcji, w której wystąpił błąd (ale który niekoniecznie go spowodował). Wywołania funkcji „rodzeństwa” (wykonane i zakończone przed bieżącą funkcją) nie pojawiają się w śledzeniu wywołań.
Na przykład następujący program w języku Python zawiera błąd:
def a(): b() def b(): c() def c(): erreur() a()Uruchomienie tego programu za pomocą standardowego interpretera języka Python powoduje wyświetlenie następującego komunikatu o błędzie:
Traceback (most recent call last): File "tb.py", line 10, in <module> a() File "tb.py", line 2, in a b() File "tb.py", line 5, in b c() File "tb.py", line 8, in c erreur() NameError: global name 'erreur' is not definedŚledzenie wywołania pokazuje, gdzie wystąpił błąd, tj. W funkcji c. Pokazuje również, że funkcja czostała wywołana przez b, która została wywołana przez a, która została ostatecznie wywołana przez kod w linii 10 (ostatniej linii) programu.
Większość języków programowania, w tym Java i C # , natywnie umożliwia pobieranie bieżącego śledzenia połączeń za pomocą funkcji specyficznych dla języka. C ++ nie pozwala na pobranie go natywnie, ale użytkownicy C ++ mogą na przykład pobrać ślad wywołania za pomocą biblioteki stacktrace . W JavaScript , wyjątki zawierać ślady połączeń z którego wyjątek.