"Адское" программирование Ada-95 -Компилятор GNAT

         

Отладка настраиваемых модулей



Отладка настраиваемых модулей

При конкретизации настраиваемого модуля GNAT всегда использует расширение кода.Это подразумевает, что при каждой конкретизации осуществляется копирование оригинального кода с соответствующими подстановками фактических параметров настройки вместо формальных параметров.

GDB не обеспечивает возможность обращения к оригинальным сущностям настраиваемого модуля, но он позволяет выполнять отладку конкретного экземпляра настроенного модуля, который получен в результате конкретизации, путем исползования соответствующих расширенных имен.Рассмотрим следующий пример:

procedure g is generic package k is procedure kp (v1 : in out integer); end k; package body k is procedure kp (v1 : in out integer) is

begin v1 := v1 + 1; end kp; end k; package k1 is new k; package k2 is new k; var : integer := 1;begin kkp (var); kkp (var); kkp (var); kkp (var); end;

В этом случае, для того, чтобы прервать выполнение программы при вызове процедуры kp в экземпляре настроенного модуля k2, необходимо использовать следующую команду:

(gdb) break g.kkp

Теперь, при попадании в точку прерывания, можно обычным образом осуществить пошаговое выполнение кода экземпляра настроенного модуля, и проанализировать значения локальных переменных, также как и в случае обычного программного модуля.



Содержание раздела