2011-09-12 2 views
2

우리는 Delphi 2007에서 Delphi XE로 변환 한 프로젝트를 가지고 있습니다. 2007 버전에서는 JCL의 디버깅 기능을 사용하여 Exception이 나타날 때 스택 추적을했습니다.Delphi XE에서 JCL을 사용하는 스택 추적 없음

StackList := JclLastExceptStackList; 

하지만 더 이상 XE에서 델파이 2007에서 작동하는 데 사용이 것은 (그것이 를 throw ': 사실 우리는 스택 추적을 얻기 위해 다음 줄에 의존 JCL의 표준 ExceptionDlg 마법사를 사용 빈 ' 스택). 우리가 고전

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가) 있지만 (unfortunatelly) 그것은 현재 스택 추적을 보여줍니다 (물론, 예외 대화 상자로 연결됩니다) 예외의 스택 추적에이 아님.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

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

네, 그랬습니다. 사실 그것은 생성 된 루틴에서 자동으로 호출됩니다. –

관련 문제