Используя GNATMAKE 3.13a1 (20000509)
, следующая функция, кажется, не дает результата. То есть сообщения журнала никогда не записываются в журнал, а трассировка стека не регистрируется.
Окружающие журналы работают нормально.
procedure log_Stack_Trace( label : in String;
memo : in String := "" )
is
length : Natural := 16;
trace : GNAT.Traceback.Tracebacks_Array( 1..length );
begin
trace_Debug( "--- Stacktrace [" & label & "] ---" );
if ( "" /= memo )
then
trace_Debug( "---" & memo );
end if;
GNAT.Traceback.Call_Chain( trace, length );
trace_Debug( GNAT.Traceback.Symbolic.Symbolic_Traceback( trace( 1..length ) ) );
end log_Stack_Trace;
Вызов этой процедуры, например, ~
trace_Debug( "Before stack-trace" );
log_Stack_Trace( "HELLOOOO?" );
trace_Debug( "After stack-trace" );
Только дает мне вывод журнала:
До трассировки стека
После трассировки стека
Сообщение заголовка --- Stacktrace [ ... ] ---
( et c.) никогда не регистрируется.
Есть ли что-то своеобразное в GNat / Ada95, вызывающее это? Должен ли я на самом деле иметь исключение, чтобы получить трассировку стека (или что-то подобное?).