1

使用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 [ ... ] ---消息(等)。

GNat / Ada95 有什么特殊的原因导致这种情况吗?我是否必须有一个异常才能获得堆栈跟踪(或类似的?)。

4

0 回答 0