2017-03-17 7 views
1

다음 클래스가 있습니다.Null 참조 분석 결과를 로그 파일로 가져 오는 방법

class Tim 
{ 
    public Tim() 
    { 

    } 

    public Tom GetTom() 
    { 
     return new Tom(); 
    } 

} 

class Tom 
{ 
    public Tom() 
    { 

    } 

    public Jim GetJim() 
    { 
     return new Jim(); 
    } 
} 

class Jim 
{ 
    public Jim() 
    { 

    } 

    public Jom GetJom() 
    { 
     return null; 
    } 
} 

class Jom 
{ 
    public Jom() 
    { 

    } 

    public string GetMagicString() 
    { 
     return "Hello World"; 
    } 
} 

다음과 같이 사용됩니다.

class Program 
{ 
    static void Main(string[] args) 
    { 
      new Tim().GetTom().GetJim().GetJom().GetMagicString(); 
    } 
} 

는 내가 그것을 실행하면 null 참조 예외가 발생하고 다음과 같이 새로운 Null 참조 분석은 새로운 예외 도우미에서 아름다운 쇼를 발생합니다.

enter image description here

이 명확하게 예외에 대한 책임이 체인에 어떤 방법을 전화 나 같이이 중대하다. 그러나이 코드가 필드에서 실행중인 경우이 오류를 로그 파일에도 기록하고 싶습니다. 이를 위해 catch 블록에서 NullReferenceException을 캡처하면 null을 반환 한 메서드에 대한 정보가 표시되지 않습니다. 이 기능은 VS Exception Helper 대화 상자에서만 사용할 수 있으며이 시점에서 로그 할 수 없습니까?

답변

3

이 기능은 VS 예외 도우미 대화 상자에서만 사용할 수 있으며이 시점에서 로그 할 수 없습니까?

예, Visual Studio 예외 도우미에서만 사용할 수있는 기능이며 현재로서는 로그인 할 수 없습니다.

사실상 불가능하지는 않지만 Visual Studio 디버거와 동일한 기능으로 코드를 계측해야합니다. 정상적인 비 계측 시나리오에서는 Null 참조가 실제로 어디서 왔는지에 대한 기록이 없기 때문에 로그 된 출력에서 ​​해당 정보를 제공 할 방법이 없습니다.

+0

Visual Studio 디버거와 동등한 기능을 사용하여 코드를 계측하는 방법에 대해 자세히 설명 할 수 있습니까? 나는 그것을하는 법을 의미하고 거기에 어떤 예제/샘플에 대한 링크를 의미합니다. –

+0

@ jimcrown : 죄송합니다, 아니요. 더 자세히 설명 할 수는 없습니다. 이것은 엄청나게 광범위한 질문입니다. 완전히 새로운 디버거를 작성하는 것만은 아니지만이 고급 기능을 추가하는 것만 큼 (VS 팀이 어떻게 구현했는지 모르지만 ... 기존 IntelliTrace 기능을 활용했을 가능성이 가장 높습니다. 이제는 null 참조의 소스를 찾기 위해 거꾸로 추적하기 위해 실제 코드 검사/디 컴파일을 수행합니다. –