2014-07-07 1 views
0

포함 된 CodeSite 익스프레스에서 런타임에 예외 스택 추적을 얻을 수 있습니까? 그렇다면 누구나 이와 관련된 경험이 있거나 사례가 있습니까?포함 된 CodeSite Express를 사용하여 어떻게 Delphi XE 5에서 스택 추적을 얻을 수 있습니까?

오픈 소스 라이브러리에서이를 달성 할 수있는 방법이 있습니까?

로깅을 10 년 이상 된 Delphi 응용 프로그램에 도입 했으므로 로깅하지 않고도 상당한 비율의 응용 프로그램이 남아 있습니다. 따라서 아직 재 작성되지 않은 영역에는 Application.OnException 훅이 있습니다. 프로덕션 환경에서 발생하는 산발적 인 액세스 위반에 대해 의미있는 스택 추적을 갖는 것이 매우 유용합니다. 아래는 내가 이미 가지고있는 것이며, 나는 StackTrace 속성이 비어 있음을 알게되어 실망했다.

class procedure Log.Error(const err: Exception; const method: string); 
begin 
    FileLog(err, method); 
end; 

class procedure Log.FileLog(const err: Exception; const method: string); 
var 
_msg: TStringList; 
begin 
    //_msg := Format('%s Failed:%3:s%1:s%3:s %2:s%3:s', [PreparedEntry(method), err.Message, err.StackTrace, sLineBreak]); 
    _msg := PreparedEntry(Format('%s Failed:', [method])); 
    _msg.Add(err.Message); 
    _msg.Add(err.StackTrace); 
    WriteLog(_msg, _logFileName); 
end; 

우리는 여전히 델파이 클라이언트 응용 프로그램을 제공하는 다중 계층 .NET의 WCF 서버 응용 프로그램에 델파이 Win32 응용 프로그램에서 마이그레이션의 고급 단계에 있습니다. Delphi XE5를 구매하도록 경영진을 설득 한 후에 (또 다른 개선 된 json 지원 및 라이브 바인딩을 얻으려는) 다른 델파이 구매를 요구하는 것은 매우 어려운 일입니다.

감사

+1

CodeSite Express는 스택 추적 기록을 지원하지 않습니다 ('SendStackTrace' 메소드는 Express Edition에서 지원되지 않습니다). – TLama

+0

나는 그것을 두려워했다. 감사. – reckface

+2

madExcept이 승인을 받았습니다. –

답변

5

당신이 다음 코드 사이트를 통해 전달할 수있는 스택 추적을 얻을 수 제다이 코드 라이브러리에 JCLDebug 단위. 개인적으로, 나는 훨씬 더 유연하고 작은 투자 가치가있는 madExcept을 사용합니다. 이렇게하면 코드 사이트를 통해 전체 버그 보고서 (스택 추적 포함)를 기록 할 수 있습니다.

+0

고마워요. 그러나 관련없는 문제에 대해 지난 달 모든 JCL 및 JEDI 의존성을 제거해야했습니다. madExcept에 대해 읽었으며 가장 권장되는 것으로 보입니다. – reckface

+2

+1, madExcept가 선택 도구입니다. –

관련 문제