Отладка настраиваемых модулей
Отладка настраиваемых модулей
При конкретизации настраиваемого модуля 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 |
Теперь, при попадании в точку прерывания, можно обычным образом осуществить пошаговое выполнение кода экземпляра настроенного модуля, и проанализировать значения локальных переменных, также как и в случае обычного программного модуля.