코딩하는 오징어

visual studio DEBUG 본문

Language/C++

visual studio DEBUG

코딩하는 오징어 2017. 9. 17. 21:56
반응형

안녕하세요 코딩하는 오징어입니다. 오늘은 visual studio 에서 디버깅하는 법을 알아 보겠습니다. 저는 IDE를 쓸 때 제일 먼저 하는 일이 그 IDE환경에서 디버깅하는 방법 부터 알아 보는 스타일입니다. eclipse에서도 단축키정도만 다를 뿐 visual studio와 일맥 상통합니다. (gdb로 디버깅 하시길 원하는 분들은 다음에 linux부분에서 포스팅하도록 하겠습니다.)

소스코드는 알고리즘 과제 입니다...소스코드는 무시하시고 디버깅에만 집중해주시면 감사하겠습니다. ㅎㅎ



먼저 run_time error가 났습니다. 어디서 프로그램이 죽었는지 머리로 계산하지마세요. F5를 누르면 error 발생 지역으로 갑니다.



line 18왼쪽에 노란색 화살표가 보이시나요??? 에러의 원인입니다. (list.cur 에는 현재 쓰레기 주소가 들어있으므로 쓰레기주소에 데이터를 쓰려고해서 에러가 난 것입니다.)


다음으로 break point를 지정해 봅시다.


프로그램을 중단시키고 싶은 지점에 커서를 두고 F9를 누르시거나 라인 왼쪽 부분에 빈공간이 보이시죠? 거기다 마우스를 두고 더블클릭을 하게되면 위와같이 빨간색 점이 생깁니다. 저것이 바로 break_point입니다.



break_point를 설정해주고 F5를 누르게 되면 그 지점에서 프로그램이 멈추는 것을 확인 할 수 있습니다. (노란색 화살표가 현재 진행 상태입니다.) 보시면 아시겠지만 list_insert_head는 제가 만든 함수입니다. F11을 누르면 함수 안으로 들어갈 수 있습니다.

위 사진을 보면 list_insert_head 함수 안으로 들어간 것을 확인 할 수 있습니다. F10과 F11은 디버깅중에 다음 코드를 실행하는 단축키 입니다. 하지만 F11에 경우 해당라인이 함수일 경우 함수안으로 타고 들어가고 F10은 함수와 상관없이 한 라인이 그냥 넘어갑니다. 그래서 단축키를 사용하지않고 디버그 탭에서 클릭으로 하실경우 F10은 step over F11은 step into라고 되어 있습니다. 함수 안으로 들어갔다가 함수안을 끝까지 보지않고 나오시기 원하신다면 SHIFT + F11을 누르시면 함수를 호출한 곳으로 빠져나오게 됩니다.



다음은 watch창입니다. 자동탭에서는 현재 프로그램의 모든 변수들의 값들을 확인 할 수 있습니다.(포인터 변수일 경우 메모리 주소값을 확인 할 수 있습니다.) 지역 탭에서는 현재 진행되고있는 구간 안의 변수 값들을 확인 할 수 있습니다.



조사식탭에서는 원하는(보고싶은) 변수명을 검색 하여 값들을 확인 할 수 있습니다.


호출스택 탭에서는 현재 함수를 어디까지 타고 들어왔나 확인 할 수 있습니다. 재귀함수를 이용하여 처리할 일이 있을 때 쓰면 굉장히 편합니다.



마지막으로 중단점의 조건을 지정할 수 있습니다. visual studio 2015 버전의 경우 디버그 탭 -> 새 중단점 -> 함수 중단점을 클릭 하시면됩니다. 함수 이름에 변수명이나 함수 이름을 쓰고 조건식을 써주면 그 조건에 해당하는 경우에만 프로그램이 중단 되는 것을 확인 할 수 있습니다.


디버깅을 모두 마치셨다면 SHIFT + F5를 누르시면 디버깅이 종료됩니다. 


디버깅의 모든 것은 아니지만 이 정도만 알고 계셔도 디버깅하는데 큰 문제가 없을 것입니다. ㅎㅎ 이상 코딩하는 오징어였습니다.

반응형
Comments