Ада-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

k1.kp (var); k2.kp (var); k1.kp (var); k2.kp (var); end;

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

(gdb) break g.k2.kp

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



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