Skip to content
EntityQ1554400· pop 11· linked from 33 articles

Трассировка стека

Sign in to save

Also known as stack backtrace, stack traceback, traceback, backtrace

report of the active stack frames at a certain point in time during the execution of a program

Wikidata facts

Show 1 more fact

via Wikidata · CC0

Article · Русский

Трассировка стека (от англ. stack trace) — это отчёт о действующих кадрах стека в определённый момент времени во время выполнения программы. Когда программа запускается, память обычно динамически выделяется в двух местах; на стеке и в куче . Память постоянно выделяется на стеке, но не обязательно в куче. Каждый раз, когда функция вызывается в программе, блок памяти выделяется поверх исполняющегося кадра стека. На высоком уровне, кадр выделяется чтобы содержать параметры функции и локальные переменные, объявленные в ней. Программисты обычно используют трассировку стека во время интерактивной а также посмертной отладки. Конечные пользователи могут увидеть трассировку стека как часть сообщения об ошибке, о которой они могут затем сообщить программисту. Трассировка стека позволяет отслеживать последовательность вызванных функций - до точки, в которой трассировка стека была создана. В посмертном сценарии это распространяется на функцию, в которой произошел сбой (что не обязательно там же где он был создан). В качестве примера, следующая программа Python содержит ошибку. def a: i = 0 j = b(i) return jdef b(z): k = 5 if z == 0: c return k + zdef c: errora При запуске программы в стандартном интерпретаторе Python появляется следующее сообщение об ошибке. Traceback (most recent call last): File "tb.py", line 15, in a File "tb.py", line 3, in a j = b(i) File "tb.py", line 9, in b c File "tb.py", line 13, in c errorNameError: name 'error' is not defined Трассировка стека в показывает что ошибка возникла в функции c . Она также показывает, что функция c была вызвана функцией b, которая была вызвана функцией a, которая, в свою очередь, была вызван кодом на 15-ой строке (она же последняя строка) программы. Стековые кадры каждой из этих трёх функций были-бы расположены в стеке таким образом, чтобы функция a занимала нижнюю часть стека, а функция c - верхнюю.

Abstract from DBpedia / Wikipedia · CC BY-SA

Connections

Categories