나는이 조건에 버그가 있습니다Visual Studio 2010에서 컴파일러 오류입니까?
while(CurrentObserverPathPointDisplacement > lengthToNextPoint && CurrentObserverPathPointIndex < (PathSize - 1))
{
CurrentObserverPathPointIndex = CurrentObserverPathPointIndex + 1;
CurrentObserverPathPointDisplacement -= lengthToNextPoint;
lengthToNextPoint = (CurrentObserverPath->pathPoints[min((PathSize - 1),CurrentObserverPathPointIndex + 1)] - CurrentObserverPath->pathPoints[CurrentObserverPathPointIndex]).length();
}
동안 릴리스 모드에서 무한 루프에 갇혀 얻을 것으로 보인다.
while(CurrentObserverPathPointDisplacement > lengthToNextPoint && CurrentObserverPathPointIndex < (PathSize - 1))
00F074CF fcom qword ptr [dist]
00F074D2 fnstsw ax
00F074D4 test ah,5
00F074D7 jp ModelViewData::moveCameraAndCenterOnXYPlaneForwardBackward+27Eh (0F0753Eh)
00F074D9 mov eax,dword ptr [dontRotate]
00F074DC cmp eax,ebx
00F074DE jge ModelViewData::moveCameraAndCenterOnXYPlaneForwardBackward+27Eh (0F0753Eh)
{
당신은 두 번째에 대한 것을 볼 수 있습니다 : 내가 마지막 줄 다음
OutputInDebug("Here");
에 디버그 프린트를 넣어 때 자체 조건에 대해 생성 된 어셈블리가 interstingly 디버그 모드에서 잘, 이상 작동 조건에서는 bool 유형의 함수 매개 변수 인 'dontRotate'의 값을 eax로 이동 한 다음 비교합니다. 그러나 dontRotate는 해당 비트 근처에서 사용되지 않습니다.
이 데이터는 조금 작을 수도 있지만 개인적으로 명백한 컴파일러 오류처럼 보입니다. 하지만 슬프게도, 실제로 버그 리포트를 생성하기에 충분한 문제가있는 것으로 분류하는 방법을 모르겠습니다.
편집 : 하지 실제 감속하지만, 유형 :
double CurrentObserverPathPointDisplacement;
double lengthToNextPoint;
int CurrentObserverPathPointIndex;
int PathSize;
vector<vector3<double>> CurrentObserverPath::pathPoints;
Edit2가 :
나는 동안의 끝에 디버그 인쇄 문에 추가하면, 이것은 얻는 조립입니다 더 이상 버그를 표현하는 생성되지 :
while(CurrentObserverPathPointDisplacement > lengthToNextPoint && CurrentObserverPathPointIndex < (PathSize - 1))
00B1751E fcom qword ptr [esi+208h]
00B17524 fnstsw ax
00B17526 test ah,5
00B17529 jp ModelViewData::moveCameraAndCenterOnXYPlaneForwardBackward+2D6h (0B175A6h)
00B1752B mov eax,dword ptr [esi+200h]
00B17531 cmp eax,ebx
00B17533 jge ModelViewData::moveCameraAndCenterOnXYPlaneForwardBackward+2D6h (0B175A6h)
{
코드에 해당하는 지침처럼 보이지 않습니다. – wallyk
우선, 식별자를 약간 줄일 수있었습니다. 그러나 어떤 일이 일어나고 있는지 파악하려면 어떤 유형이 관련되어 있는지 확인하는 것이 도움이됩니다. – bitmask
지나치게 긴 줄을 감싸주십시오. –