Dev/Docu/ru/Debug.odc

DevDebug

ENGLISH
DEFINITION DevDebug;

	IMPORT Views, Kernel;

	PROCEDURE Execute;
	PROCEDURE ShowGlobalVariables;
	PROCEDURE ShowLoadedModules;
	PROCEDURE ShowViewState;
	PROCEDURE Unload;
	PROCEDURE UnloadModuleList;
	PROCEDURE UnloadThis;
	PROCEDURE HeapRefView (adr: INTEGER; name: ARRAY OF CHAR): Views.View;
	PROCEDURE ShowHeapObject (adr: INTEGER; title: ARRAY OF CHAR);
	PROCEDURE SourcePos (mod: Kernel.Module; codePos: INTEGER): INTEGER;
	PROCEDURE UpdateGlobals (name: ARRAY OF CHAR);
	PROCEDURE UpdateModules;

END DevDebug.


Когда происходит ошибка времени выполнения, например, деление на нуль, открывается "текст ловушки", который показывает цепочку вызовов процедур. Этот текст можно использовать для навигации по структурам данных. Некоторые другие команды полезны для анализа состояния системы.
Заметим, что отладка происходит полностью через BlackBox, нет никакой отдельной отладочной среды. Отладка происходит "посмертно" относительно команд, то есть, команда, вызвавшая ошибку, прерывается, и затем отлаживается. Однако, обычно ошибка времени выполнения не затрагивает ни загруженных модулей, ни структур данных, привязанных к ним, ни открытых документов. Другими словами, отладка происходит "во время выполнения", по отношению к приложению в целом.

Возможные меню:

MENU
	"&Loaded Modules"	""	"DevDebug.ShowLoadedModules"	""
	"&Global Variables"	""	"DevDebug.ShowGlobalVariables"	"TextCmds.SelectionGuard"
	"&View State"	""	"DevDebug.ShowViewState"	"StdCmds.SingletonGuard"
	"E&xecute"	""	"DevDebug.Execute"	"TextCmds.SelectionGuard"
	"&Unload"	""	"DevDebug.Unload"	"TextCmds.FocusGuard"
	"Unloa&d Module List"	""	"DevDebug.UnloadModuleList"	"TextCmds.SelectionGuard"
END


PROCEDURE Execute
Охрана: TextCmds.SelectionGuard
Выполняет строку (между кавычками), которая должна иметь форму последовательности команд Компонентного Паскаля, например, "Dialog.Beep; Dialog.Beep". Для простых команд кавычки могут быть опущены, например, Dialog.Beep (-> StdInterpreter).

PROCEDURE ShowGlobalVariables
Охрана: TextCmds.SelectionGuard
Показывает глобальные переменные модуля, имя которого выделено.

PROCEDURE ShowLoadedModules
Показывает список загруженных модулей. Эта команда может быть полезна для модулей, которые следует скомпоновать вместе при построении приложения.

PROCEDURE ShowViewState
Охрана: TextCmds.FocusGuard
Показывает состояние текущего фокусированного отображения.

PROCEDURE Unload
Охрана: TextCmds.FocusGuard
Пытается выгрузить модуль, исходник которого находится в фокусе. Выгрузка срывается, если модуль еще не загружен, или он не является верхним модулем (от которого не зависят другие).

PROCEDURE UnloadModuleList
Охрана: TextCmds.SelectionGuard
Пытается выгрузить список модулей, имена которых выделены. Выгрузка может сорваться полностью или частично, если один из указанных модулей еще не загружен, или импортирован хотя бы одним клиентским модулем. Модули следует выгружать сверху вниз.

PROCEDURE UnloadThis
Используется в текстах с коммандером DevCommanders.View. Эта команда берет текст, следующий за коммандером, и трактует его как список выгружаемых модулей. Подобна UnloadModuleList за исключением того, что не требует выделять список модулей.

PROCEDURE HeapRefView (adr: INTEGER; name: ARRAY OF CHAR): Views.View
PROCEDURE ShowHeapObject (adr: INTEGER; title: ARRAY OF CHAR)
PROCEDURE SourcePos (mod: Kernel.Module; codePos: INTEGER): INTEGER
PROCEDURE UpdateGlobals (name: ARRAY OF CHAR)
PROCEDURE UpdateModules
Эти процедуры используются внутренне.