디버깅을 하다보면 Access Violation이 가끔 일어나곤 하는데,
디버깅을 종료하지 않고 벗어나는 방법이 있다.
Line2] pPlayer->GetOwnPlayer();
만약 Line1에서 pPlayer가 NULL이라면 Line2에서는…
이렇게 First Chance Exception 경고창이 뜨게 된다.
디스어셈블리창으로 보면 (0 + 0E78h)주소에 접근하기 때문임을 알 수 있다
접근을 하지 않고, 이 함수를 호출하기 전으로 돌아가면 Access Violation을 피할 수 있다.
그럼 어떻게 호출전으로 돌아갈까?
아래 빨간 박스는 모든 함수마다 존재하는 구문이다. (노란화살표 바로 아래 부분: 016A75F5~016A75FB)
콜스택을 초기화 하고, 각종 레지스터를 함수 호출 전의 상태로 돌린다.
Instruction Pointer를 변경하면 문제끝!!
IP를 바꾸는 것은 Menu>Debug>Windows>Registers에서 쉽게 변경 가능하다.
IP를 바꾸는 더 쉬운 방법은...
마우스 우클릭>Go To Disassembly> Set Next Statement
'Tip' 카테고리의 다른 글
Set a Thread Name in Native Code (0) | 2010.12.03 |
---|---|
Remote Debugging (0) | 2010.11.23 |
IsNaN (0) | 2010.11.02 |
Failed to create .NET Frameworks PropertyGrid component (0) | 2010.08.20 |
코딩 도우미 Visual Basic Macro (0) | 2009.10.13 |