IDE Window: Call Stack/ru
Deutsch · English · Français · Русский
Важно
Вы должны настроить отладчик и запустить проект для его отладки. Только тогда это окно будет полезно.
Вывод, показанный на этой странице, основан на отладчике GNU (GDB), который в настоящее время является единственным отладчиком, поддерживаемым Lazarus. Его вывод иногда выглядит как C, а не Pascal. Другие отладчики могут показать более Паскалеподобный стиль.
Диалоговое окно

Что такое стек вызовов?
Стек вызовов - это стек вызовов функций. Верхняя строка - это текущая функция, нижняя строка - основная программа.
Столбец Source
В этом столбце указано имя исходного файла. Эта информация извлекается из отладочной информации, содержащейся в исполняемом файле (или из внешнего файла символов GDB, если вы выбрали эту опцию). Эту содержат информацию только те части программы, которые явно скомпилированы с отладочной информацией.
Столбец Line
Если позиция содержит отладочную информацию, будет показан номер исходной строки, в противном случае отображается только указатель адреса в исполняемом файле. В этой строке была вызвана следующая функция.
Note: Нумерация строк - это нумерация на момент последней компиляции проекта с отладочной информацией. Если вы впоследствии вставляли или удаляли строки, нумерация будет неправильной.
Столбец Function
Искаженное имя процедуры или функции. Компилятор преобразует идентификаторы Паскаля в имена, которые могут использовать инструменты GNU (разработанные для кода C). Например:
TAPPLICATION__CREATEFORM(0x81fb738, void, (^TAPPLICATION) 0xb7cd0014)
Это означает:
- Измененное имя функции - TAPPLICATION__CREATEFORM, которое является процедурой TApplication.CreateForm модуля LCL forms.pp. Поскольку Pascal не чувствителен к регистру, а инструменты GNU чувствительны к регистру, FPC преобразует имя в верхний регистр. Поскольку инструменты GNU не знают о классах и объектах, class.method преобразуется в имя глобальной функции.
- Список параметров зависит от платформы и соглашения о вызовах. Это означает, что список параметров можно перевернуть, начиная с самого правого параметра. Так обстоит дело в приведенном выше примере.
- Параметр 'Self' является неявным, что означает, что вы не записываете его в исходный код Pascal, потому что FPC создает его автоматически. Это всегда первый параметр, генерируемый компилятором (хотя и невидимый в исходном коде Паскаля). Из-за обратного порядка параметров Self отображается здесь как последний параметр. Он имеет тип ^TAPPLICATION и его шестнадцатеричное представление 0xb7cd0014.
- Следующий параметр в Паскале - это 'var Reference', не имеющий типа. Следовательно, это 'void'.
- Последний параметр в Паскале - 'InstanceClass: TComponentClass'. Gnu видит этот параметр просто как указатель с шестнадцатеричным значением 0x81fb738.
Маленькие хитрости
Дважды щелкните по строке, чтобы перейти к исходному коду.
Popup menu

Show (Показать)
Переход к позиции исходного кода текущей строки.
Set as current (Задать как текущий)
Задать выбранную запись в качестве текущего фрейма стека. Локальные переменные существуют только в пределах своего собственного фрейма локального стека. Задав текущий фрейм, вы можете наблюдать за значениями переменных в (локальном) контексте выбранной вами процедуры.
Copy all (Копировать все)
Копирование стека вызовов в буфер обмена.
From the Free Pascal wiki, page "IDE Window: Call Stack/ru", as it stood on 2021-01-24 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
