반응형

http://www.gpgstudy.com/forum/viewtopic.php?p=49349




"0xㅁㅁㅁㅁㅁㅁㅁㅁ"에 있는 명령이 "0xㅁㅁㅁㅁㅁㅁㅁㅁ"의 메모리를 참조했습니다. 메모리는 "read"될 수 없었습니다. 

프로그램을 마치려면 [확인]을 클릭하십시오. 
프로그램을 디버그하려면 [취소]를 클릭하십시오. 







이미 삭제되거나 해서 쓸수없는 메모리 영역에 접근한거 같은데요 
호출스택 따라가 보시면서 포인터 변수에 쓰레기값 있는지 보세요 
계속 같은 위치에서 뻑나신다면 해당 위치 메모리 주소를 
메모리 창에 적어놓고 값 변하는걸 감시하면서 한줄씩 실행 해보세요 
그리고.. DevPartner 까시면 도움이 될겁니다.






먼저 어떻게 하면 뻗을수 있다를 알아낸다음 
디버그 모드로 실행해서 똑같이하면 뻗을겁니다. 
아니면 계속 디버그 모드로 테스트 하다보면 뻗을겁니다. 
해당지점에 말이죠. 

중요한 말은 0xㅁㅁㅁㅁㅁㅁㅁㅁ의 메모리를 참조했습니다 입니다. 
유효하지 않은 메모리를 찾았다는 것이죠. 
보통 이런 경우는 예전에 잘 사용하던 메모리인데 이제 유효하지 않은 경우이거나 
애초에 초기화 하자 않아서 접근이 안되는 메모리일수도 있죠. 

만약 디버그 모드에서 정말 찾기 힘들다 싶으면 minidump를 사용해보세요. 
배포버전에서 사용하는 방법인데... 
최소한 스택 정보 (호출된 함수, 함수인자값)와 멈춘 코드 정도는 남습니다. 

바로 원인을 알 수 있으면 해결하고 모르겠다면 
로그 남겨 놓고 상황 판단하는 법 입니다. 
디버깅의 기본은 값을 찍어 상황을 판단하는 것이라 생각하면 됩니다.

반응형

+ Recent posts