Функция отслеживания Ada95 не производит вывод - PullRequest
1 голос
/ 14 февраля 2020

Используя 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, вызывающее это? Должен ли я на самом деле иметь исключение, чтобы получить трассировку стека (или что-то подобное?).

...