2011-09-12 89 views
2

我們有一個項目,我們從Delphi 2007轉換到Delphi XE。在2007版本中,我們使用JCL的調試功能在出現異常時進行堆棧跟蹤。事實上,我們所使用的JCL的標準ExceptionDlg嚮導,它依賴於以下行來獲取堆棧跟蹤:在Delphi中沒有使用JCL的堆棧跟蹤XE

StackList := JclLastExceptStackList; 

使用德爾福2007年工作,但不再在XE這個東西(它拋出一個「空白'堆棧)。

如果我們更換的東西用一個經典的

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

...它的工作原理(因此,我們有正確的setings WRT到地圖等),但(可惜的是)它顯示目前堆棧跟蹤(當然,這導致異常對話框)和而不是末尾的堆棧跟蹤異常。

任何想法如何解決這個問題?

TIA

回答

3

你叫JclStartExceptionTracking

看來這個方法負責首先連接異常並添加一個通知程序。

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

是的,我做到了。實際上它在生成的例程中被自動調用。 –