在Delphi XE中没有使用JCL的堆栈跟踪



我们有一个从Delphi 2007转换到Delphi XE的项目。在2007版中,我们使用JCL的调试特性在出现异常时进行堆栈跟踪。事实上,我们使用了JCL的标准ExceptionDlg向导,它依赖于以下行来获取堆栈跟踪:

StackList := JclLastExceptStackList;

这个东西曾经在Delphi 2007中工作,但在XE中不再工作(它抛出'blank'堆栈)。

如果我们用经典的

   StackList := JclCreateStackList(false,0,Caller(0,false));
   lTemp := TStringList.Create;
   StackList.AddToStrings(lTemp,true,true,true,true);
   ShowMessage(lTemp.Text);
   lTemp.Free;
   Stacklist.Free;

…它可以工作(因此我们有正确的设置WRT映射等),但(不幸的是)它显示当前堆栈跟踪(当然,这会导致异常对话框)和最后异常的堆栈跟踪。

有什么办法解决这个问题吗?

TIA

你打电话给JclStartExceptionTracking了吗?

似乎这个方法首先负责连接异常并添加通知器。

function JclStartExceptionTracking: Boolean;
begin
  if TrackingActive then
    Result := False
  else
  begin
    Result := JclHookExceptions and JclAddExceptNotifier(DoExceptNotify, npFirstChain);
    TrackingActive := Result;
  end;
end;

相关内容

  • 没有找到相关文章

最新更新