본문 바로가기

3.구현/VC++

VC에서 pseudo 디버깅

VS에서 유용한 디버깅 팁들이 많다. 그중에 pseudo-register을 사용하는 방법이 있다.

작성:http://ospace.tistory.com/(ospace114@empal.com) 2009.12.23

pseudo-register

먼저 pesudo-register가 무엇일까? pesudo-register는 watch 윈도우에서 보이는 실제 변수가 아닌 가짜변수이다. 이를 통해서 기타 여러가지 디버깅 정보를 얻을 수 있다.
해당 pesudo-register는 VisualStudio 버전에 따라서 지원이 안될 수 있으니 주의!

@ERR, hr

이는 최종 win32 에러 값을 출력한다. 해당 에러 메시지 숫자가 아니라 사람이 읽을 수 있는 결과를 표시해준다는 점에서 훌륭하다.
hr은 윈도우의 HRESULT 포멧을 의미한다. 이 값이 없으면 @ERR은 그냥 숫자값으로 표시된다.

$ReturnValue

함수에 실행후 리턴되는 값을 표시한다.

eax

앞의 $ReturnValue와 같은 의미이다. 즉 함수 결과가 eax 레지스트리에 저장된다고 하니, 이 값을 결과 함수 리턴 값을 알 수 있는 것이다.
이는 @EAX 등으로도 사용가능하다. 여기에서도 뒤에 hr을 붙일 수 있으나, 결과는 숫자로 출력된다. 아마도 HRESULT에서 숫자값과 매치된다면 사람이 읽을 수 있는 값으로 나올지도 모르겠다.

$user

실행되는 디버깅 하는 사용자 영역 정보를 보여준다. 프로세스와 쓰레드에 대한 정보를 표시한다.

결론

VS로 디버깅도하면 할 수록 모르는 것이 더 많아지는 것 같다. 아래 참조 [2]를 보면 좀더 자세한 내용이 들어 있다. 아직 한눈에 100%이해하기는 힘들다. 필요할때 마다 하나씩 알아가는 수 밖에...

이제 다시 디버깅을 시작해야겠다. ㅡ.ㅡ; ospace.

참조

[1] greggm, http://blogs.msdn.com/greggm/archive/2004/12/11/279978.aspx

[2] MSDN, Pseudo-Register Syntax, http://msdn.microsoft.com/en-us/library/cc266544.aspx

반응형