2014-03-04 7 views
1

Madexcept 도구를 사용하여 예외를 기록하지만 주기적으로 호출 스택을 기록 할 수 없습니다. 어느 누구도 호출 스택을 기록하는 방법을 제안 할 수 있습니까?호출 스택을 파일에 로깅

var 
    exc: IMEException; 
.... 
exc := madExcept.NewException; 
Logger.Log(exc.BugReport); 

참고이 전체 버그 리포트를 로그온 할 :

+0

더 세부 사항을 제공하십시오. 호출 스택을 주기적으로 로깅한다는 것은 무엇을 의미합니까? 어떤 호출 스택? 스레드마다 하나씩 있습니다. 그리고 정기적으로 당신은 무엇을 의미합니까? 이것의 목적은 무엇입니까? –

+0

여러 스레드가있는 응용 프로그램을 사용하고 있습니다. 응용 프로그램 성능이 매우 느린 경우가 있는데, 그 문제를 분석하기 위해 모든 스레드에 대한 호출 스택 로그를 쓰고 싶을 때가 있습니다. 다른 도구를 사용하여 호출 스택을 기록 할 수 있습니까? – nanda

+0

이 문제는 전체 madExcept 버그 보고서를 생성하는 데 시간이 오래 걸린다는 점입니다. 특히 스레드가 많은 경우. 프로파일 러가 필요하거나 방해가 적은 로깅이 필요합니다. –

답변

1

질문에 순진 대답은 당신이 전용 스레드 내에서 다음을 수행 할 수 있다는 것입니다. 정보를 적게 기록하려는 경우 일반 madExcept 기술을 사용하여 IMEException 참조에서 해당 정보를 추출 할 수 있습니다.

또한이 모든 정보를 수집하는 데 상당한 시간이 걸리므로 프로그램 실행을 방해하게됩니다. 당신이 정말로 원하는 것은 프로파일 러 또는 추적 로깅입니다. madExcept가 실제로 근본적인 문제에 대한 해결책이라고 생각하지 않습니다.

4

전체 보고서없이 추적 만 수행하면 속도가 느려지므로 MadStackTrace를 호출하면됩니다. 프로그램이 다양한 프로 시저/함수/메소드로 들어가는 방법을 알고 싶을 때, 특히 여러 가지 방법이있을 때나 성능 문제에 대해 머리를 긁적 거리는 경우 매우 유용합니다.

당신은 당신의 용도이 필요합니다 :

uses 
    MadStackTrace; 

// Then to use the thing: 

procedure foo; 
begin 
    writeln('How I got to FOO:' + MadStackTrace.StackTrace); 
end; 

http://help.madshi.net/madStackTraceUnit.htm

+0

사실 가장 비싼 스택 추적입니다. 그리고 나는 물음표가 실제로 무엇인지는 애플리케이션이 시간을 보낸 곳의 흔적이라고 생각합니다. 여기에있는 것은 ** here **를 얻기 위해 스택 추적을 생성합니다. –