debug 기초
가장 기본적으로 F9를 누르면 다음과 같이 breakpoint라는 빨간 점이 생깁니다.(F9를 다시 누르면 해제됩니다. 이 점의 역할은 해당 라인을 실행하려고 할 때 멈춰주는 역할을 합니다.(디버깅 시에만 해당) 디버깅을 하는 가장 기본적인 요소라고 할 수 있습니다.
F5를 누르거나 F10 또는 메뉴의 디버그에 디버그 시작을 누르면 됩니다. Ctrl + F5는 디버깅이 아닌 실행입니다. 아까 지정해놓은 breakpoint에 노란색 화살표가 생겼습니다. 이 화살표의 의미는 해당 줄엥 있는 명령을 실행할 차례라는 것을 의미합니다. 여기서 중요한 것은 실행할 차례라는 것입니다. 아직 실행하지 않았다는 것을 항상 기억해야합니다.
변수에 마우스 커서를 올려놓으면 해당 변수의 값을 보여줍니다. i의 값을 보면 쓰레기 값이 들어간 것을 볼 수 있는데 아직 해당 줄을
실행하지 않았기 때문에 초기화가 진행되지 않았습니다.
F10을 눌러서 해당 줄을 실행하고 다음 줄로 넘어갑니다. i의 값이 0으로 초기화 된 것을 볼 수 있습니다.
반복문 또한 다음과 같이 breakpoint를 지정하여 값의 변화를 확인할 수 있습니다.
디버깅 중에 창 왼쪽 아래에 볼 수 있는 영역입니다. 일단 조사식을 보도록 하겠습니다. 조사식은 말 그대로 원하는 변수에 대해서 조사를 할 수 있는 곳이며 수식을 이용할 수 있습니다.
사용 방법은 위와 같이 이름에 변수명을 써주거나 &나 +와 같은 연산자로 사용 가능합니다.
이번엔 컴파일에서 오류를 잡는 법입니다. 이전 코드의 9번 줄에서 세미콜론을 하나 빼도록 하겠습니다. F7을 눌러서 컴파일을 하게되면
컴파일러가 다음과 같이 오류를 잡아줍니다. 오류의 수와 어디서 어떤 이유로 오류가 있는지를 알려줍니다. 하지만 컴파일러는 문법적인 오류만을 잡아준다는 것을 기억해야합니다.
F4를 누르게되면 다음과 같이 출력창에 있는 오류를 선택합니다.( 마우스로 더블클릭을 해도 됩니다. 여러 개의 오류가 있는 경우 F4를 계속해서 누르면 순차적으로 다음 오류를 선택합니다.)
출력창에 있는 오류가 선택되면 소스를 작성하는 창에 커서를 오류가 있는 곳으로 이동시켜주면서 breakpoint가 생기는 곳에 푸른색 표시가 생성되는데 오류가 있는 지점을 표시해줍니다.
위 영상은 컴파일러 외에 런타임(실행 중) 일어나는 버그에대한 영상입니다. 디버깅을 보여주기 위한 영상이며 다소 인위적인 부분이 있지만 양해부탁드립니다.
간단하게 문자열의 포인터를 넘겨받아 문자열의 길이를 반환해주는 함수입니다. 해당 함수의 문제점은 NULL포인터에 대한 처리가 없어
서 NULL참조가 일어나 생기는 문제입니다. 영상 중간에 에러메세지에 0x00000000 위치를 읽는 동안 문제가 일어났다는 문구가 써있는데
이런 문구 하나하나를 유심히 읽어보면 문제를 쉽게 해결할 수가 있습니다.