В чем разница между Call Stack и Stack Trace? - PullRequest
23 голосов
/ 20 сентября 2011

В чем разница между терминами "стек вызовов" и "трассировка стека"?

Ответы [ 3 ]

29 голосов
/ 20 сентября 2011

Стек вызовов, как правило, является «текущим стеком операций», т. Е. Во время его работы.

Трассировка стека, как правило, является копией стека вызовов, которая регистрируется при некотором сбое, например, исключении.

Другими словами, пока вы отлаживаете, вы будете смотреть на текущий стек вызовов, но когда вы просматриваете журналы, вы получите трассировку стека.По крайней мере, это моя интерпретация терминов:)

11 голосов
/ 20 сентября 2011

Стек вызовов - это структура данных, хранящая информацию об активных подпрограммах в работающей программе. Трассировка стека является представлением стека вызовов.

10 голосов
/ 20 сентября 2011

Я думаю, что Википедия довольно хорошо различает их:

стек вызовов - это структура данных стека, в которой хранится информация об активных подпрограммах компьютерной программы

Трассировка стека представляет собой отчет об активных кадрах стека в определенный момент времени во время выполнения программы.

Другими словами, стек вызовов представляет собой фактическую структуру данных в памяти, тогда кактрассировка стека является снимком указанной структуры данных.

...