2012-07-07 6 views
10

gdb를 사용하도록 가르치고 있으며 임의의 테스트를 일부 실행하고 있습니다. Windows 7 x64에서 MinGW의 휴대용 설치를 사용하고 있음을 언급 할 가치가 있습니다. 나는 스택 오버 플로우에서 결과를 알고있는 프로그램을 만들었고 gdb에서 처음 실행했을 때 두 개의 SIGSEGV 신호 (놀람 없음)를 얻은 다음 코드 030000000375를 사용하여 종료합니다 (다시 놀랄 일이 아닙니다).gdb : 코드 030000000375로 종료 된 프로그램

Program received signal SIGSEGV, Segmentation fault. 
Program received signal SIGSEGV, Segmentation fault. 
Program exited with code 030000000375. 

호기심이 내게 최고가되고 ... 그 코드는 무엇입니까? 나는 그것을 봤고 거의 찾지 못했습니다.

감사합니다.

UPDATE : 참고로 나는 우분투에서 같은 프로그램을 시도하고, 결과는 약간 다릅니다 : 진수 형식의 종료 코드 밖으로

Program received signal SIGSEGV, Segmentation fault. 
Program terminated with signal SIGSEGV, Segmentation fault. 
The program no longer exists. 
+0

항상 같은 코드를 사용합니까? 그렇다면 프로그램의 데이터를 변경하고 여전히 동일한 코드가 있는지 확인해 보았습니까? – Shahbaz

답변

10

gdb 인쇄합니다. 확실하지는 않지만 선도적 인 0으로 표시됩니다.

따라서 030000000375은 16 진수로 표시되어 Windows 프로그래머에게 코드가 훨씬 더 일반적으로 보입니다.

0xC00000FDSTATUS_STACK_OVERFLOW이고, 정의는 ntstatus.h이어야합니다.

+0

이것은 매우 좋은 캐치입니다! – ArjunShankar

+1

좋은 찾기, 감사합니다! 스택 오버 플로우가 발생할 때 Windows가 실제로 알려주는 매우 흥미로운 부분이지만 Linux는 그렇지 않습니다. – The111

+0

당신은 환영합니다! Btw : 아마도이 코드로 끝나는'gdb'가 아니기 때문에이 질문의 주제를 "* gdb : ** Program ** exe with code 030000000375 *"로 수정해야 할 것입니다. @ The111 – alk