我们有一个项目,我们将其从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;
...它能正常工作(因此我们对地图等设置有了正确的设置),但不幸的是,它显示的是当前堆栈跟踪(这当然会导致异常对话框的出现),而不是最后一个异常的堆栈跟踪。
有什么想法可以解决这个问题吗?
TIA