#43. 어플리케이션 디버깅 (Call Stack)

MFC용 어플리케이션을 작성하다보면, 이따금씩 Debug Assertion Failed라는 대화 상자와 쉽게 마주치곤 합니다. 이런 대화 상자들이 생기는 원인은 간단한 경우일 수도 있지만 매우 복잡한 경우가 될 수도 있습니다.


문제가 있는 코드를 일일이 눈으로 훑어보면서 찾아내는 작업도 디버깅입니다. 하지만, 이것은 프로그램의 규모가 커지면 커질 수록 부적절한 방법이 됩니다. 이런 부적절하고 비 효율적인 디버깅은 별 쓸모가 없습니다.


프로그램의 어떤 기능이 수행되기 위해서 수행되어진 내역들을 차근차근히 모아놓고 있는 스택 스토리지가 디버그하는 도중에 자동 생성되어 알아서 동작하게 됩니다. 이 스택의 이름은 호출 스택 (Call Stack)이라고 합니다.


이 호출 스택 내역을 조회해보면 어떤 부분에서 문제가 발생하게 되었는지 단번에 파악할 수가 있습니다.


호출 스택에 내역을 저장하고 조회하기 위해서는 디버그 모드로 프로젝트를 컴파일해야 합니다. MFC 완벽 가이드를 구매하면서 받으셨던 부록 CD의 디버깅 편에 대한 예제가 담긴 프로젝트를 열고 컴파일하십시오.


특정 부분에서 “Debug Assertion Failed”라는 대화 상자가 나타날 것입니다. 여기서, “Retry”을 선택하여 디버그를 시작하십시오. 어떤 부분에서 문제가 생겼음을 정확히 알려줄 것입니다. 하지만, 여러분은 이곳에서 무엇을 잘못 작성한 것인지 알 길이 없습니다. 즉, 별로 도움이 되지 않는 정보라는 점이죠. 하지만, 포기하지 마시고, 디버그 도구 모음에 표시된 아이콘 들 중에서 “Call Stack” 항목을 선택하십시오. (아이콘 위에 잠시 포인터를 대면 툴팁 설명이 나타나는데 이 설명의 이름이 “Call Stack”인 항목을 선택하십시오.) 그러면 자그마한 팝업창과 함께 리스트가 나타납니다. 아래로 갈 수록 먼저 수행되어진 기능들이며, 맨 위의 부분이 문제가 생긴 부분입니다.


여러분이 수행한 기능은 대개 2~3단계 뒷쪽에 기록되어져 있습니다. 여러분이 작성한 클래스의 이름이 등록된 항목을 더블 클릭하십시오. 무엇이 문제인지 확인하실 수 있습니다. 이제, 디버그 도구 모음에서 디버그 중단 아이콘을 클릭하여 다시 개발자 환경으로 돌아오신 다음 문제가 생긴 코드를 고쳐서 다시 빌드하십시오.

댓글 남기기