본문 바로가기
Visual Studio

[visual studio]디버깅

by Junk_Seo 2018. 2. 6.
반응형

디버깅

visual studio의 디버깅을 사용하면 프로그램의 코드를 한 줄 한 줄 실행하여 변수의 값 등을 확인할 수 있습니다.

디버깅의 전제조건으로는 프로그램의 빌드가 성공해야 합니다. 즉, F7 키를 통해 빌드를 실행하여 빌드가 성공하면 디버깅을 할 수 있습니다. 

만약 빌드가 실패하며 디버깅을 할 수 없습니다.

 

단축키

-F9 

커서가 있는 위치에 중단점(break point) 설정 / 해제

위에서 빨간색 네모 안에 커서가 위치하고 있습니다. 이렇게 커서가 위치하고 있는 위치에서 F9 키를 누르면 왼쪽에 빨간색 동그라미가 생기면서 중단점이 설정됩니다. 

이렇게 중단점이 설정된 상태에서 한 번 더 F9 키를 누르면 중단점이 해제됩니다.

그리고 F9키가 아닌 마우스 좌클릭으로 빨간색 동그라미가 있는 곳에 클릭하면 중단점 설정 및 해제가 가능합니다.

 

-F5 

디버깅 모드 시작합니다. 만약 중단점이 있으면 중단점이 있는 그 라인에서 멈춘다.

중단점 위치에서 멈추면 그 라인 이전까지 실행이 완료된 상태입니다.

위의 모습처럼 디버깅을 실행하면 보이는 창입니다. 

디버깅 시의 창과 코드 편집 창은 전혀 다른 공간입니다.

*디버깅 모드 시 라인을 실행하다가 F5를 누르면 다음 중단점까지 실행한다.

 

-F10

라인 단위로 디버깅을 실행한다. 

위 빨간색 네모 박스 안에 왼쪽 끝에 있는 노란색 화살표가 나타나며 F10키를 누를 때마다 한 줄씩 내려가면서 코드를 실행합니다.

프로시저를 만나면 프로시저 안으로 들어가지 않고 바로 프로시저를 실행시키고 다음 라인으로 이동합니다.

 

-F11

디버깅 시 라인이동을 하다가 프로시저를 만날 경우 프로시저 안으로 들어간다.

F10과 비슷하게 한 줄씩 이동하면서 실행하다가 프로시저를 만나면 프로시저 안으로 들어가서 실행합니다.

 

-shift + F11

F11을 통해 프로시저로 들어갔을 경우 그 프로시저를 다 실행하고 나오는 단축키

만약 프로시저 안드로 들어갔는데, 프로시저를 바로 실행하고 싶은 경우 사용합니다.

이 단축키를 사용하면 프로시저를 빠져나오는데 이 프로시저를 다 실행하고 나옵니다.

-shift + F5디버깅을 종료합니다.

<디버깅 시 주의 점>

-디버깅 시 변수의 값을 변경하지 말 것

 

디버깅 시에 위의 사진처럼 두 가지 방식으로 변수의 값을 변경할 수 있는데, 이렇게 변경할 경우 정상작동을 통한 값 변경이 아니기 때문에 실제 실행되어 세팅된 값이 아닌 전혀 다른 값이 나오게 되므로 사용하지 않도록 합니다. 

 

-디버깅 시 중단점 위치를 이동시키지 말 것

위 사진의 빨간색 줄 위치의 노란색 화살표에 마우스를 이동시키면 실행 위치를 이동시킬 수 있다는 메시지가 뜨고 마우스 좌클릭을 누른 상태에서 위/아래이동하면 실행 위치를 이동시킬 수 있습니다. 

디버깅을 하다가 봐야 할 위치를 넘어갔다고 이런 방법으로 위치를 이동시키면 실행 이전으로 돌아가는 것이 아닌 그 코드를 다시 한번 실행시키게 되어 의도와는 다르게 실행됩니다. 

따라서 이런 경우 디버깅을 종료하고 다시 디버깅을 하는 것이 바람직합니다.

****

디버깅 위치를 지나가면 다시 돌아갈 방법이 없다. 디버깅을 중단하고 다시 시작한다.

 

-디버그 모드 중에는 코드 편집을 하지 말 것(디버깅 중 코드편집 기능 사용 X)

임의로 빨간색 네모 위치에 코드를 추가하였고, 이 상태에서 F10 키를 누르면 파란색 네모 위치에 편집하여 계속하기 빌드가 시작됨이라는 말과 함께 코드가 편집되었다고 합니다.

 

이렇게 코드가 편집되면 디버깅 상태에서 컴파일을 다시 수행하게 됩니다. 이러한 컴파일은 코드 모드 상태일 때의 컴파일과는 다릅니다. 

위 사진에서는 코드가 간단하여 별 무리 없이 코드가 편집되어 컴파일이 수행되었는데, 어느 정도 프로젝트가 진행된 상태에서 코드 편집 기능을 사용할 경우 컴파일을 하는데 많은 시간이 소요되고 또 코드 모드 컴파일과 디버그 모드 컴파일이 꼬일 경우가 생긴다. 이렇게 꼬이면 이 부분을 수정하는데 어려움이 생기게 됩니다. 

따라서 코드 편집 기능은 사용하지 말아야 하며 실수로 코드를 수정했다면 ctrl + z 키를 사용하여 수정하기 전까지 되돌려야 합니다.

 

<디버깅 시에 확인해야 할 창>

<조사식>

위 사진에서 파란색 네모 안에 빨간색 동그라미 위치에 조사식이라는 창이 있습니다.

처음 조사식 창을 열면 아무것도 없습니다. 

여기에 프로그래머가 확인하고 싶은 변수를 코드 부분에서 범위 지정한 다음 drag and drop을 통해 추가하면 그 변수의 값을 확인할 수 있습니다. 

삭제는 조자식 창에서 그 변수를 클릭한 다음 delete 키를 통해 삭제가 가능합니다.

 

변수의 값 확인은 파란색 네모 안에 자동이라는 창에 디버깅 실행 시에 그 라인을 실행하는데 관련된 변수의 값을 모두 보여주는데, 그 변수들이 많으면 찾기가 어렵기 때문에 조사식이라는 창을 통해 프로그래머가 필요한 변수를 설정하여 그 값을 확인하는 것이 일반적입니다.

 

<호출스택>

디버깅 모드에서 위 사진의 파란색 네모처럼 호출 스택을 확인할 수 있습니다. 

호출 스택은 이 프로시저가 어디서 호출되었는지를 확인할 수 있습니다. 

위 사진에서 보면 C_DATA class 멤버 함수 printData() 함수가 있고, 이 함수는 main안에서 호출되었다는 것을 알 수 있습니다.

 

위 사진에서는 error가 발생한 상황인데 error의 위치를 C_DATA class 멤버 함수 printData() 함수로 보여주고 있습니다. 하지만 실제로는 main안에서 C_DATA 포인터 변수 p가 메모리 해제되었는데 printData() 함수를 호출하고 있기 때문에 발생한 error입니다. 이런 경우 디버깅 시에 보여주는 것으로는 확인하기가 어렵습니다 따라서 호출 스택을 확인하여 이 함수가 어디서 호출되었는지를 따라서 들어가면서 error를 확인합니다.

 

호출 스택에서 마우스 왼쪽 더블 클릭을 하면 그 위치로 이동합니다.

반응형

'Visual Studio' 카테고리의 다른 글

[visual studio]release 실행파일 만들기  (0) 2018.04.18
[visual studio]단축키 및 설정  (0) 2018.01.04