윈도우즈 디버깅 문제...
글쓴이: munhoney / 작성시간: 월, 2012/02/06 - 10:32오전
안녕하세요
kldp에 윈도우즈 디버깅 문제를 올리는게 조금 맞지는 않은것 같긴한데요..
한번 올려봅니다.
문제는 디버깅 자체를 할 수 없는 상황이라는 거죠.
분명 crash가 발생하긴 하는데, 그 위치가 main들어가는 부분이 아니고, 그 전단계라는 겁니다.
그래서 visual studio 디버거를 사용할 수도 없고, ollydebug를 사용해보았지만, 역시나 main 전단계에서 에러가 발생하더군요 (access violation)
신기한 것은 cout혹은 printf로 임의부분을 추가하다보면 간헐적으로 에러가 발생하지 않고 실행이 된다는 것입니다.
이로 추측해 볼때 아마 버퍼 오버플로우가 아닐까 혼자 생각하고 있지만, 문제는 어떻게 접근해야 하는지를 모르겠네요
우선 단순화 작업을 하여 50%이상의 코드는 제거했지만, 나머지 50%에 대해서는 의존성이 강하게 엮어져있어서 분리하기가 어렵네요
혹시 이런 문제를 겪어보셨거나 접근 방식에 대한 아이디어가 있으신분 계시나요.. ㅡㅡ'
참고로 현재 개발 환경은
QT Creator - (컴파일러는 Visual Studio 8.0)
Windows 7
입니다.
Forums:
윈도우용 디버거는
WinDBG 입니다.
프로그램이 Crash 되었을때, 덤프파일을 생성하여
WindDBG 로 분석하면 됩니다.
[WinDbg로 쉽게 배우는 Windows Debugging ]
책을 보시면서 하셔야 할 겁니다.
WinDBG로 해보았는데, 역시나 문제는 main
WinDBG로 해보았는데, 역시나 문제는 main 이전에 발생을 하고 있네요..
여기서 어떻게 더 찾아야 할지는 모르겠군요
---------------------------------
http://blog.naver.com/munhoney
---------------------------------
사용하시는 언어가 C++인가요? main 보다 먼저
사용하시는 언어가 C++인가요?
main 보다 먼저 실행되어 에러가 난다면, 전역으로 설정된 클래스 오브젝트의 constructor 에서 일어나는 문제일 수 있습니다.
윗분 말대로 C++ 이라면 전역 오브젝트의
윗분 말대로
C++ 이라면
전역 오브젝트의 constructor에서 발생하는 문제이지 않을까 하네요
main 이 뜨기 전에 전역 오브젝트들의 constructor가 먼저 실행되고
전역 오브젝트의 초기화가 모두 이루어진 이후에 main 이 실행되게 됩니다
_CRTStartup 같은거 말씀하시는건가요?
올리디버거에서 옵션설정하면 디버깅 들어갈지 않나요..?
댓글 달기