使用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 有什么特殊的原因导致这种情况吗?我是否必须有一个异常才能获得堆栈跟踪(或类似的?)。