[펌]Visual C++ 6.0 사용하기 - 디버깅
이번에는 VC++ 6.0으로 디버그하는 법을 한번 알아보겠습니다.
프로그래밍에서 가장 어렵고 많은 시간을 차지하는게 디버깅이죠.
VC++은 여러가지 기능을 제공하여 좀더 수월하게 디버깅을 할 수 있습니다.
십진수의 이진수 값을 보여주는 간단한 예제를 통해 디버깅 방법을 알아보도록 하겟습니다.
#include <iostream>
#include <climits> // for CHAR_BIT
using namespace std;
void main()
{
int num = 2004, size, mask = 0x80000000;
char bin[64];
// int형의 비트 크기를 구한다.
size = sizeof(int) * CHAR_BIT
for( int i = 0; i < size; i++ )
{
if( (num & mask) == 0 ) bin[i] = '0';
else bin[i] = '1';
mask >>= 1; // 우측 시프트
}
bin[i] = '\0';
prinft("%d = %s\n", num, bin);
}
▷ 문법에러 디버깅
위 소스를 컴파일하면 에러가 발생하고 에러 정보가 아래 빌드창에 나타나게 됩니다.
에러 메세지를 더블클릭하거나 F4를 누르면 해당 에러위치로 에디터 창의 커서가 바로 이동하게 됩니다.
▷ 논리에러 디버깅
문법에러는 컴파일러가 명확하게 알려주기 때문에 디버깅이 아주 쉽습니다. 그러나 논리에러는 프로그래머가 직접 찾아내는수 밖에 없죠.
위 소스의 문법에러를 고치고 컴파일을 하면
2004 = 00000000000000000000011111111111
라는 결과가 나오지만 사실 십진수 2004는 이진수로 11111010100 입니다.
어디서 잘못됬는지 디버깅을 해보겠습니다.
디버깅을 시작할려면 먼저 툴바의 아이콘이나 단축키 F9로 브레이크 포인트를 지정합니다.
그 다음에 툴바의 아이콘이나 단축키 F5로 디버그를 시작합니다.
아래 세 버튼을 적절히 사용해서 한줄씩 디버그를 해나가면 됩니다.
(코드가 복잡할 경우 브레이크 포인트를 여러개 잡아서 F5 를 눌러가며 디버그 할 수도 있습니다.)
Step Into : 한줄씩 실행하며 함수 내부로 들어간다. (F11)
Step Over : 한줄씩 실행하며 함수 내부로 들어가지 않는다. (F10)
Step Out : 함수에서 바로 빠져나온다. (Shift + F11)
디버그 중에 현재 변수의 값을 알려면 변수 위에 마우스를 가져다 두거나 Watch 창을 이용할 수 있습니다.
bin[] 배열과 mask 변수가 어떻게 변하는지 Watch 창으로 감시해보도록 하죠.
Watch 창에 두 변수의 이름을 추가합니다.
디버깅을 해보면 우측 시프트한 mask 값이 잘못 되었다는 것을 알수 있습니다.