문제

XNA 라이브러리와 함께 C#을 사용하고 있으며 Vector3 객체에서 NANS가 자르고 있습니다. 불쾌한 계산이 발생할 때 디버거에 침입 할 수있는 방법이 있습니까 (예 : 0으로 나누기)? 현재이 프로그램은 계속 운영되고 있습니다. VS2008 Professional을 사용하고 있습니다. 예외 대화 상자의 모든 예외는 "user-unhandled"열에서 선택됩니다.

편집 : 명확히하기 위해, 나는 나쁜 계산이 어디에 있는지 해결할 수 없습니다. 이것이 바로 디버거가 자동으로 파손되기를 원하는 이유입니다. 브레이크 포인트 설정은 해결책이 아닙니다.

도움이 되었습니까?

해결책

먼저 이중/플로트를 0으로 나누는 것은 이중이 양의 또는 음수인지에 따라 무한대/-인 페니티를 제공합니다. 0으로 나눈 Zero Double/Float 만 NAN을 제공합니다. 두 경우 모두 예외는 발생하지 않습니다.

조건부 중단 점을 사용하여 특정 변수가 이러한 값 중 하나로 설정 될 때를 감지 할 수 있어야합니다. Nan! = Nan처럼 Nan을 확인할 때주의하십시오.

double a = double.NaN;
Console.Out.WriteLine(a == double.NaN); // false
Console.Out.WriteLine(a == a); // false
Console.Out.WriteLine(double.IsNaN(a)); // true

다른 팁

어떻게 든 예외를 처리하는 것처럼 들립니다 (일반적인 예외를 잡는 것과 같이) CTRL+Alt+E를 누르면 예외 대화 상자를 제기하는 것입니다. 예외를 위해 "버린 경우"확인란을 확인하십시오 (예외는 예외입니다). s) 당신은 관심이 있습니다

당신은 a를 설정할 수 있습니다 조건부 중단 점 표현의 제수가 0 일 때만 깨집니다.

나는 이것이 오래된 게시물이라는 것을 알고 있지만 .....

경험에서 거의 항상 vector3.

그것이 제로 길이가 될지 확실하지 않을 때 나는 지금 항상합니다.

float l = v.length (); if (l! = 0.0) v /= l;

Normalize의 0으로 나누는 것은 예외를 제시해야하지만 그렇지 않습니다. 나에게 머리 긁힘을 많이했다.

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