2012-07-20 3 views
5

Visual Studio를 사용하여 혼합 된 WPF/CLR/관리되지 않는 기본 C++ 프로젝트를 디버깅하는 동안 재미있는 (다소 성가신) 오류가 발생합니다.이 오류는 Windows XP에서만 발생합니다. 프로그램 내에서 메모리 손상이 발생하는 것 같습니다. 범위가 너무 커서 여기에 게시 할 수 없습니다. 내가 가진 문제는 프로그램에서 크래시가 발생하면 VS 디버거가 예외를 찾으려고하지 않고 종료된다는 것입니다. 아무 것도 throw되지 않기 때문에 가정합니다. 프로그램 종료 코드는 실제로해야 할 유일한 정보이며, 최소 int 값입니다.프로그램이 코드 -2147483645로 종료되었습니다.

누구나이 문제가 발생하여 올바른 방향으로 나를 가리킬 수 있습니까?

는 편집 :

문제를 조사하기 위해 계속

은, 필자는 바로 프로그램 종료에 반대 가끔 스택 추적 및 예외를 얻을 수 있다는 것을 발견했다. 추적을 통해 벡터 할당 (푸시)으로 이동합니다. 프로그램이 종료되는 시나리오에서는 여전히 실행 된 마지막 줄입니다. 나는 이것이 어딘가에 손상된 메모리를 가지고 있다고 가정한다. 비록 이것이 일반적으로 프로그램 덤프로서 예외적으로 나타나지는 않을 것이라는 사실이 나를 올바른 방향으로 향하게 할 수 있기를 바랬다.

+0

거기에 exit() 문 또는 descturcor에서 던져서 표시된 동작이 모두 발생했습니다. – rerun

+5

종료 코드가 HRESULT ==> 0x80000003 – jglouie

+0

으로 해석되는 것이 더 이해하기 쉬울 것입니다. 여러분이 소멸자로부터 던져 버린 어떤 것 위에 있을지도 모릅니다. – jimmyjambles

답변

6
// 
// MessageId: STATUS_BREAKPOINT 
// 
// MessageText: 
// 
// {EXCEPTION} 
// Breakpoint 
// A breakpoint has been reached. 
// 
#define STATUS_BREAKPOINT    ((NTSTATUS)0x80000003L) 

프로그램이 INT3 명령에 상주하고 중단 점을 트리거합니다. 그러나 디버거가 없으므로 프로그램을 종료합니다. 그것은 코드에 남겨진 길잃은 __debugbreak() 일 수 있습니다. 프로그램 상태가 손상되면 야생 점프에 의해 트리거 될 수 있습니다.

디버깅해야합니다. 만약 당신이 쉽게 당신의 dev에 기계를 repro 수없는 다음 실패한 기계에서 미니 덤프가 필요합니다.

+0

답변 해 주셔서 감사합니다. Windows XP VM에 Visual Studio를 설치하기까지했습니다. 다시 컴파일하고 현재 디버거를 사용하여 로컬로 실행했지만 여전히 종료 된 프로그램입니다. 호출 된 마지막 줄은 할당입니다. – jimmyjambles

+0

잘 모르겠지만 XP에서는 일반적인 동작이 아닙니다. 물론 힙 손상 같은 것 같습니다. Debug + Exceptions에서 던진 상자를 선택하십시오. –

+1

은 위쪽 배열 바운드를 지나서 한 바이트를 억세스하고 있었고, 나는 무엇을 던져 버렸는지 아무것도 모른다고 생각합니다. 다시 한 번 감사드립니다. – jimmyjambles

관련 문제