2013-04-25 2 views
0

다음과 같은 문제가 있습니다 : 내 응용 프로그램은 코드 1로 종료됩니다. libc의 종료 지점에서이 문제를 일으키는 원인을 알기 위해 중단 점을 설정하고 싶습니다. 그러나이를 수행하는 방법을 모릅니다. MSVC 2012를 사용하고 있습니다. 도움을 주시면 감사하겠습니다.libc에 중단 점을 넣으려면 어떻게해야합니까?

+0

main()의 마지막 중괄호에 중단 점을 설정하십시오. 그리고 히트 때 싱글 스텝. CRT 소스 코드에 들어가서 "mainret"변수에 주목하십시오. 여전히 0인지 확인하고 데이터 중단 점을 설정하십시오. –

답변

0

atexit()과 작은 유틸리티 함수 또는 전역의 소멸자를 사용하십시오. 그러나 문제는 그것이 종료 될 때 무엇이든간에 스택 프레임이 빠져 나간다는 것입니다. 또한이 프로그램은 아마도 exit()을 호출하지 않을 수도 있지만 어쩌면 TerminateProcess()을 호출 할 수 있습니다. 텍스트에 "나와 함께 종료 됨"이라는 사실은 함수가 호출되었음을 의미하지 않으며 main()에서 돌아 오는 것은 동일한 효과를가집니다.

내 조언은 프로그램을 종료시키는 코드를 찾기 위해 디버거에서 단계별로 수행하는 것입니다. 그러면 문제를 신속하게 파악할 수 있습니다. 또한 캐치되지 않은 예외와 같은 비정상적인 사항에 대한 디버그 출력을 확인하십시오. 예외가 잡히더라도 "first chance exception"메시지는 오해의 소지가 있습니다. 그래도 의심스러운 경우 예외가 발생하는 곳에서 IDE가 중지되도록 구성 할 수 있습니다.이 경우 IDE에서 해당 위치를 쉽게 찾을 수 있습니다.

+0

안녕하세요, 둠스터 및 답변 해 주셔서 감사합니다. 이미 프로그램을 밟아 보았습니다. 끝까지 절대적으로 괜찮은 프로그램입니다. 예외 나 비정상적인 디버거 메시지는 전혀 발생하지 않습니다. – Aikei

+0

나는 당신의 문제를 이해하지 못한다고 생각합니다. 끝까지 잘 진행되면 다음 단계가 종료됩니다. 그냥 추측 하겠지만,'main()'에'return true;'아마도? –

+0

그게 전부 야. 나는 왜 exit 코드가 0이 아닌지 이해하지 못한다. 1. 내 메인의 끝에서 0을 리턴하고 실제로이 라인을 실행하지만, 디버거는 코드 1로 끝났다고 말한다. – Aikei

관련 문제