2009-08-05 3 views
1

Visual Studio에서 C#을 디버깅 할 때 주어진 코드 줄에서 NullReferenceException이 발생한 개체 참조를 볼 수 있습니까?WHILL 개체 참조가 NullReferenceException을 일으키는 것을 확인했습니다.

나는 비주얼 스튜디오에서 응용 프로그램의 디버그 빌드를 실행할 때 특정 라인에서 NullReferenceException을 얻을 수있는 이상한 상황이 발생합니다.

Visual Studio는 줄을 가리키는 예외 보조 상자를 팝업하지만 그 줄에서 사용 된 3 개의 개체 참조 중 아무 것도 해당 지점에서 null이 아닙니다.


라인은 다음과 같습니다

myClassInstance.myMethod(myOtherClassInstance.IPAddressInstance.ToString()); 

모두 내 클래스의 인스턴스는, null가 아닌, (의도 된 값을 갖는)을하여 IPAddress 인스턴스 때문이다.

+0

기호와 코드가 일치하지 않는 것 같습니다. 디버그 구성을 다시 작성하십시오. –

+0

@ 존 아마, VS.NET은 소스가로드 된 모듈과 다르다는 것을 즉시 경고합니다. – xanadont

+0

디버그 기호가 없으면 그리 중요하지 않습니다. –

답변

1

[DebuggerNonUserCode] 속성으로 표시된 코드를 호출하는 경우 문제는 해당 줄이 아니라 프레임 워크 코드에있을 수 있습니다.

어쨌든 게시 할 수있는 구체적인 예가 있습니까?

+0

라인과 함께 질문이 업데이트되었습니다. – xyz

2

null 개체를 반환하는 함수에주의하십시오. 이것은 저를 한 번 잡았고 디버거에서 명확하지 않습니다. 이것을 확인하십시오 :

public class FooBar 
{ 
    public int ReturnInt() { return 0; } 
} 

public FooBar ReturnNullObject() 
{ 
    return null; 
} 

// Execution code: 
int exceptionalInt = ReturnNullObject().ReturnInt(); 

편집 : 편집에 따라 IPAddressInstance가 null을 반환하지 않는지 확인하십시오.

편집 : 한 줄을 두 줄로 나눌 수 있습니다. 도움이 될 것입니다.

var ip = myOtherClassInstance.IPAddressInstance; 
var ipString = ip.ToString(); 
myClassInstance.myMethod(ipString); 
0

NRE를 얻을 때까지 "step-into"에서 해당 줄에 중단 점을 설정하십시오.

마술은 없습니까? 일부 코드는 null을 역 참조하려고합니다.

A.Property.Property2.ToString()과 같이 Visual Studio에서 null이 없다는 메시지가 표시 되더라도 문제는 Visual Studio가 디버그에 입력하지 않는 ToString() 메서드에 있습니다.

관련 문제