Ada95回溯函数不产生输出

Ada95回溯函数不产生输出,ada,gnat,ada95,Ada,Gnat,Ada95,使用GNATMAKE 3.13a1(2000059),以下函数似乎不会产生任何结果。也就是说,日志消息永远不会写入日志,也不会记录堆栈跟踪 周围的日志执行正常 procedure log_Stack_Trace( label : in String; memo : in String := "" ) is length : Natural := 16; trace : GNAT.Traceback.Tracebacks

使用
GNATMAKE 3.13a1(2000059)
,以下函数似乎不会产生任何结果。也就是说,日志消息永远不会写入日志,也不会记录堆栈跟踪

周围的日志执行正常

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[…]--
标题消息(等)从未被记录


GNat/Ada95是否有什么特殊的原因?我是否真的必须有一个异常才能获得堆栈跟踪(或类似的)

那是一个20岁的编译器。。。如果你在美国,明年就可以喝了。是时候升级了?你使用的GNAT版本已经有20年的历史了。这有什么原因吗?我同意这是一个旧的编译器,但这就是我继承的环境。这是为了一个经过审核的安全系统,所以要把编译器转储到一个更新的系统中并不容易。这是一个有20年历史的编译器。。。如果你在美国,明年就可以喝了。是时候升级了?你使用的GNAT版本已经有20年的历史了。这有什么原因吗?我同意这是一个旧的编译器,但这就是我继承的环境。这是一个经过审核的安全系统,所以要将编译器转储到一个更新的系统中并不容易。