본문 바로가기
프로그래밍 공통기초

기초 디버깅

by 코드덕후 2022. 8. 13.
728x90

프로그램 개발을 하는데 있어서 만드는것도 중요하지만 틀린 부분을 고치는 것도 중요합니다.

틀린 부분을 고치기 위해서는 찾는과정 과 그것이 틀렸다는 것을 확인 하는과정이 필요합니다.

어디가 틀린지 모른다면??? 어느 누구라도!! 고칠수가 없습니다.( 빌게이츠가 돈을 주더라도...??)

그러기 위한 첫과정입니다.

 

이글은 제가 지식백과에 올렸던 글입니다. 아래는 링크된 원본 입니다.

 

디버깅이란?

 먼저 디버그가 모냐? 라는 것을 알아야합니다.

 프로그래밍을 하다가 의도하지 않은 값이나 동작을 만날때 우리는 버그라고 합니다.
 즉 " 벌레 " 라고들 하지요. 그래서 이 버그(벌래)를 잡는 과정을 디버그라고 합니다.

 그래서 오류를 해결하거나 값이 제대로 되는가를 알아보는 것을 " 디버깅 " 이라고
 합니다.

 초보 분들이 많이 해보는 것이
 CTRL + F7 , 또는 CTRL + F5일것입니다.
 여기서 CTRL + F5가 디버깅 하지 않고 시작입니다.

 즉 그냥 바로 결과를 실행해 보는것입니다.

 CTRL + F7은 컴파일하기의 단축키입니다. 내가 짠소스에 문제가 없느냐를 판별할때
 많이들 사용합니다.

 전 프로그래밍을 할때 F7을 자주 눌러서 확인을 합니다.

 많은 코드를 짜고나서 F7을 누르기 보다는 자주 F7로 버그나 에러가없는지 확인하는것
 또한 오류를 해결하는데 아주 유용합니다.

 서문은 여기 까지만 하고 이제 본론으로 들어가도록 하겠습니다.

 먼저 디버깅을 하려면 확인을 하고자 하는 곳에 커서로 찍어서 선택을
 해놓습니다.

 그리고 난후 F9를 누르면 아래처럼 빨간 당구공 표시가 생길것입니다.

 이것을 우리는 "브레이크 포인트" 즉 디버깅 할때 멈춰야 할곳으로 지정하는
 것입니다.

 이렇게 브레이크 포인트를 찍고 나서 시작할때 CTRL + F5를 누르는 것이 아니라
 그냥 F5만 눌러야 합니다.

 위에서 말씀드렸듯이 CTRL + F5는 "디버깅 하지 않고 시작" 이라는 의미이니까요

 F5를 보시면 "디버깅" 이렇게 되어있습니다.

 비쥬얼 스튜디오의 "디버그"탭을 보시면 해당 단축키들이 보입니다.


 본격적으로 들어가기 전에 단축키들에 대해 알아보도록 하겠습니다.

 F9  : 브레이크 포인트를 설정/해제 하는 기능
 F10 : 프로시져 단위로 실행
 F11 : 단계별 실행
 SHIFT + F11 : 이전단계로 돌아가기

 입니다.
 이정도만 알고 있어도 디버깅 하시는데 어려움을 없으리라 생각합니다.


 값을 확인해 보거나 디버깅으로 에러가 예상되는 곳을 선택합니다.
 그런후에 F9를 누르면 아래처럼 빨간 당구공이 생기게 됩니다.

 

 

 그런후에 F5를 눌러서 디버깅 모드로 실행을 하게됩니다.

 그러면 빨간 당구공이 있는곳에 노란 화살표가 생긴것을 알수 있습니다.

 여기가 바로 멈춰진곳입니다.

 여기에서 한단계 밑으로 내려가야 우리가 원하는 곳에 어떤값이
 들어가 있는지 알수가 있습니다.

 그래서 값을 확인하고자 하는 변수가 있는곳의 바로 아래를 브레이크 걸어서
 해당 값을 확인하는것이 통상적입니다.

 그리고 난후 F10을 눌러봅니다. 프로시져 단위로 한단계씩 실행 되는것을 보실수
 있습니다.

  

 

 

 

 

 

 

 그럼 F11과 F10의 차이는 무얼까요?
 F10은 프로시져 단위 실행 이기 때문에 다른함수가 있어도 내부까지 들어가지는
 않습니다. 즉 값이 실행되고난 결과만 볼수 있죠 하지만 F11을 눌러서
 디버깅을 실행하면 해당 함수를 계속적으로 들어가기 때문에 C++에서 기본적으로
 제공하는 함수의  안까지도 들어가는 경우가 발생합니다.

 이부분은 여러번 디버깅 과정을 거치면서 경우에 따라서 해봐야 하는부분이니
 설명은 조금만 하도록 하겠습니다.

 

단순히 F10만 눌러서 볼때

 

 

F11로 함수 내부까지 들어갔을때

 

 

여기 까지 그림과 일반 적인 디버깅에 대해서 알아봤습니다.

디버깅은 계속적으로 프로그래밍을 하면서 느껴야 하는 작업입니다.

그렇기 때문에 "디버깅 하는 능력또 실력이다" 라고도 합니다.

프로그래밍을 하면서 틈틈히 디버깅 능력도 향상시키는것 또한
아주 중요한 과정이니 관과하지 마시고 노력하시면 좋겠네요

728x90
반응형
LIST

댓글