문제

StackTrace에는 인수로 예의를 취하는 생성자가 있습니다. 모두 괜찮고 잘하지만 다른 모든 생성자가 현재 스레드에서 스택 트레이스를 얻을 것이라고 말하지만 예외를 취하는 생성자는 그 이외의 다른 것에 대해 아무 말도하지 않는다는 것을 알았습니다.

결과 스택 추적은 예외 시점에 스택을 설명합니다.

나는 다른 스레드에서 예외에서 스택 트레이스를 만들 때 예외가 생성 된 다른 스레드에서 스택 트레이스를 만들어도 예외의 올바른 스택 트레이스를 얻을 것입니다.

누군가 확인해 주시겠습니까?

도움이 되었습니까?

해결책

내가 뭔가를 놓치지 않는 한 시도하기에 충분히 쉬워 보입니다. 이것은 나에게 올바른 스택 추적을 인쇄합니다.

static Exception threadEx;

static void Main()
{
    Thread worker = new Thread(DoWork);
    worker.Start();
    worker.Join();

    if (threadEx != null) {
        StackTrace trace = new StackTrace(threadEx);
        Console.WriteLine(trace);
    }
}

static void DoWork()
{
    try {
        throw new Exception("Boom!");
    }
    catch (Exception ex) {
        threadEx = ex;
    }
}

다른 팁

호출 된 스레드의 스택 트레이스를 만듭니다 (내부적으로 'TargetThread'매개 변수로 'CapturestackTrace'를 호출합니다. 이는 현재 스레드가 요청되었음을 나타냅니다). 다른 스레드를 생성하는 유일한 CTOR는 스레드 인스턴스를 취하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top