본문 바로가기
ZAION/C++

[C++]Lec02. Debugging

by 우기37 2024. 4. 24.

## 목차

1. 디버깅이란

2. Visual Studio에서의 디버깅

 

 

 

#1 디버깅이란

- 버그(=오류)를 제거하는 것

- 오류의 종류 : 

 - 컴파일 / 링크 오류 : 오류의 원인이 명확하며, 출력 창을 통해 쉽게 원인 파악 가능하다.

 - 런타임 / 논리적 오류 : 문제 발생 원인을 찾기 어렵다. IDE에서 제공하는 디버깅 기능과 테스트를 현명하게 사용해야 문제를 빠르게 해결 가능하다.

 

- 중요한점은 개발 숙련도가 높아지더라도  오류 없는 프로그램을 단번에 개발하는 것은 불가능하다. 그리고 숙련도가 높아짐에 따라 오류의 "확률"이 줄고, 디버깅 속도가 빨라지는 것이다. 즉, 오류를 많이 내고 스스로 디버깅을 반복적으로 수행하고 고민하는 경험을 쌓는 것이 중요하다.

 

- 디버깅을 하기 전 현재 디버깅이 가능한 구성인지 확인부터 해야한다.

 - Release 모드에서는 값을 제대로 볼 수 없다.

 - 특별한 이유가 없다면, x86 솔루션 플랫폼으로 설정

 

- 디버그 모드에 들어간 후, 디버스 탭의 창 메뉴를 보면 디앵힌 디버깅 관련 정보를 띄울 수 있는 창을 선택 가능하다.

 

 

1 - 1) 중단점(Break Point)

- 임의의 위치에서 프로그램을 정지시킬 수 있는 기능이다.

- 정지하고 싶은 위치의 왼쪽 끝을 클릭하거나 F9를 통해 중단점 생성 가능하다.

- 이후 F5(디버깅)을 통해 프로그램을 빌드 후 실행하면, 해당 위치에서 프로그램이 중단된다.

 - Ctril + F5가 아님에 주의하고, 솔루션 구성이 디버그 상태여야 함에 주의해야 한다. 현재 중단되어 있는 위치가 노란색 화살표로 표시된다.(해당 라인의 명령문은 아직 실행되지 않은 상태이다.)

 

 

- 후에 중단 위치에서 F10과 F11을 통해 디버깅을 진행한다.

 - F10 : 해당 명령문 실행하고 다음 명령줄로 진행(step over)

 - F11 : 명령문 내에서 호출하는 추가 코드(ex, 함수)로 들어간다.(step into)

 - F5 : 다음 중단점까지 진행

 - Shift +F11 : 현재 명령문이 호출되는 상위 stack으로 나가기(step out)

 

 

- 그래서 이 과정에서 해야 할 것은 데이터(메모리) 확인이다.

 - 변수에 마우스를 올려 값을 확인하거나, 하단 창을 통해 값을 확인할 수 있다.

 

 

 

1 - 2) 메모리 윈도우

- 실제 내가 생성한 변수가, 메모리 상에 어떻게 저장되어 있는지 자세히 보려고 할 때 사용한다.

- 디버그 -> 창 -> 메모리 -> 메모리 1 클릭

 

 

- 변수가 메모리에 어떻게 저장되었는지 보기 위해 주소 부분에 "&변수이름"을 입력한다. &는 변수의 주소를 얻어오기 위한 연산자이다.

- 중단점과 마찬가지로 코드 진행에 따라서 변수값이 계속 업데이트된다.

 

 

- 디버깅 기능을 활용해 내가 생각하는 순서대로 프로그램의 명령문들이 실행되고 있는지 프로그램의 흐름을 확인하고, 메모리에 저장된 데이터(변수/객체)가 내가 의도한 것과 같은지 확인할 수 있다.

 

 

 

※본 블로그는 학습을 하며 제가 이해한 내용을 바탕으로 작성되어 실제 정의와 다를 수 있습니다.

 

참고문헌

GitHub - diskhkme/cpp_lecture_material: C++ 프로그래밍 강의 자료

https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=K842939734&start=pnaver_02

'ZAION > C++' 카테고리의 다른 글

[C++]Lec04-01. Pointer & Reference  (0) 2024.04.26
[C++]Lec03. Function  (0) 2024.04.25
[C++]Lec02. Basic Syntax  (0) 2024.04.23
[C++]Lec01. Variable and Constant  (1) 2024.04.23
[C++]Lec01. Program Structure  (0) 2024.04.23