안녕하세요, 잘 돌아오셨어요
이번 강의에서는 디버거 사용법을 데모를 보여드릴게요
네 그래픽 사용자 인터페이스를 통해 디버깅 모드에서 프로그램을 시작하는 방법과
중단점 설정을 하는 방법, 콜 스택을 보는 방법, 워치 윈도우를 이용한 변수를 보는 방법을
보여드릴게요
평균을 확인하는 간단한 프로그램이죠
이걸 제 시현으로 사용할게요
3개의 정수를 읽고 저장하고 평균을 계산하는 게 전부죠
한 가지만 언급하죠 디버거를 실제로 사용하기 전에 구성이 올바르게
설정됐는지 확인해야 해요
이전 비디오에서 얘기했듯이 코드 라이트를 디버거를 이용해 구성하는 거죠
네 기억을 되살리기 위해 프로젝트를 선택하고 오른쪽 클릭해서 설정으로
가세요
네 여러분이 어떤 플랫폼에 있는지에 따라 왼쪽의 디버거 설정이
GDB로 가는 올바른 경로를 갖는지 확인하세요
네 이제 Windows를 사용한다면 사이그윈의 GDB X를 사용하거나 MinGW w64를 사용해야 할 수도 있습니다 어떤 것이 작동하든
간에요
Unix와 Linux를 사용한다면 이 경로는 설정될 필요가 없어요
또 다른 중요한 것은 컴파일 옵션입니다 컴파일 옵션에 대한 것입니다 디버깅을
위해 컴파일을 할 때 G dwf가 최적화를 위해 o에 있도록 해야 하죠
Windows에선 그런 게 디버깅 정보와 함께 실행 파일도 갖추기 위해 설정돼야
하죠
디버그 모드를 위해 구축해야 하는지도 확인해야 하고요
디버그가 선택되어서 릴리스 되지 않도록 해야 해요
네 모든 것들이 제대로 구성되어 있다면 디버거와 코드 라이트를 사용할 수 있을
거예요
네 그 고에 문제가 있다면 플랫폼 구성에 필요한 제 비디오로 돌아가세요
디버거와 코드 라이트요
디버거와 관련해 가장 중요한 개념은 중단점 개념이에요
그래서 중단점은 여러분 프로그램에 설정할 수 있는 겁니다 코드 실행을 중단하는
곳이죠
네 이렇게 말할 수 있죠 이봐요 이 선에서 멈추고 싶어요 그럼 프로그램이 디버거를
실행할 때 그 선에서 멈출 거예요 변수를 볼 수 있게 해주죠 변수의 값이요
네 한 번에 한 줄씩 코드를 진행하게 해줍니다 어떤 문제든 진단하고 고칠 수 있도록요
네 네 일반적으로 프로그램을 실행할 때 디버거에서 실행하려는데 중단점 세트가 없다면 아무
일도 안 일어나죠
네 일반적으로 빌드할 때는 다른 프로젝트처럼 프로젝트를 빌드할
수 있습니다 빌드로 가서 빌드 프로젝트로 가죠
네 그걸 빌드해 디버그 모드에서 실행할 땐 debugger 메뉴 옵션으로 가서
계속 디버거를 시작해야 해요
다시 실행하면 중단점 집합이 있다면 그걸 누를 거예요
중단점 세트가 없으면 그냥 실행될 거예요
네 이 프로그램을 디버그 모드에서 실행하려고 하면 그냥 나와서 엔터를
요청해요 숫자에서 멈추니까요 그 다음 숫자를 누르면 닫히죠
정보를 인쇄해 주지도 않죠?
네 아주 중요해요 디버거를 사용하고 싶다면 적어도 하나의 브레이크 포인트 세트가 있어야죠
네 중단점을 설정하는 가장 쉬운 방법은 중단점을 설정하고자 하는 줄 번호 위에 있는 줄 번호로 여백을
클릭하는 거예요
중단점은 해당 줄 번호에서 실행을 멈추게 되죠
10번째 줄에 printf 함수 옆에 중단점을 설정하면 더블 클릭만 하면 빨간
원이 놓이는 게 보이시죠
10번째 줄에서 멈추라고 디버거에게 말하는 거예요
네 다시 한 번 디버거를 시작하는 방법은 위로 가서 시작을 하고 계속하는 거죠
다른 건 다 회색이죠?
중단점을 누르기 위해 디버거를 시작할게요
좋아요 그럼 디버거를 계속 시작해 빌드 및 디버그를 하죠 프로그램이
10번째 줄에서 멈추는 게 보이시죠
그린 애로우가 보이고 디버거 창도 보이죠
뷰로 가면 디버거 창을 수동으로 불러올 수도 있고 디버그 모드로 가면
자동으로 불러올 수도 있어요 디버거 창에는 보이는 정보를 위한 많은 다양한 탭이 있죠
네 디버거를 통해서도 할 수 있어요 GDB 창으로 가서 체크된 모든 걸 볼
수 있어요
디버거 창은 아주 많아요
현지인들은 보통 지역 변수를 주시하죠
변수에 워치를 달 수 있어요 변수가 변하면 화면에 뜨게요
출력은 다양한 디버깅 옵션과 출력 스레드를 위한 거죠
프로그램을 실행하는 스레드를 실제로 볼 수 있어요
좀 더 진보된 개념의 콜택에 집중하고 있어요
콜스택과 지역 주민들을 살펴보죠
네 디버깅을 돕는 가장 중요한 두 가지입니다 다음은 메모리 그리고 중단점이죠
중단점이 어디에 설정되어 있는지 알 수 있어요
여러 가지 옵션이 있죠
10번 라인에 섰어요
콜 스택을 볼 수 있어요
호출 스택은 주요 기능이 호출된 걸 보여주죠
현지 주민을 보면 변수 01과 0이 3개예요
거기에 어떤 정보도 입력하지 않았죠 01, 0으로 초기화됐어요
시계는 추가할 수 있어요
+ 기호를 눌러서 특정 변수에 워치를 추가하세요
또 다른 중요한 것은 디버그 모드에서 실행할 때 디버거를 위한 툴바가
있다는 겁니다 맞아요
재생 버튼이 계속될 거예요
그럼 없애야겠네요
재생을 누르면 프로그램에서 나가죠?
그냥 실행될 거예요
프로그램은 입력값을 요구할 거예요
그래서 재생을 눌렀죠
콘솔 응용 프로그램으로 돌아가니 엔터라고 나오네요
프로그램에서 숫자 3개를 눌렀어요
여전히 print 함수를 못 봤죠
창문이 사라졌어요
디버그 모드에서 실행합니다 그리고 브레이크 포인트로 가죠 디버거 창이 나오면 10번째 줄을
멈춥니다
네 이제 툴바는 중요합니다 코드를 한 단계씩 밟는 방법이니까요 툴바를
사용할 수도 있고 디버거로 가서 여기 위의 모든 옵션을 볼 수도 있어요
이렇게 말할 수 있죠 한 발짝 들어가 지시 사항으로 한 발짝 들어가 다음 다음 지시 사항 한 발짝 나가 한 발짝 들어가
함수 안으로요
네 함수가 호출되면 그 선은 어셈블리 언어 유형으로 바뀌어요
다음, 코드 줄을 넘어가죠
목 지시도 같은 거예요
이미 함수 안에 있다면 함수 밖으로 뛰쳐나가서 당근 라인으로 이동하세요
커서로 가는 것 같아요
당근으로 달려가는 줄도요
네 네 중단점을 켰다 껐다 할 수 있고 모든 걸 비활성화할 수 있어요 메뉴를 통해 액세스할
수 있죠
다시 툴바네요
보통은 툴바를 사용해요 이미 올라와 있으니까요
그리고 다른 창을 다시 보시면 로컬은 스택과 중단점을 호출하죠
정말 중요한 것들이죠
10번째 줄에 중단점이 있다고 나오네요
커서라고만 쓰여 있는 것 같아요
10번 줄에 F 엔터를 프린트하는 데 멈췄어요
다음 지시 사항으로 가면 11번 스캔으로 갈 거예요
F는 입력을 요청하는 차단 함수예요
다음 단계로 가면 그냥 멈추죠
다음을 여러 번 눌러야 할지도 몰라요
네 프로그램이 입력을 요청할 때 제가 주로 하는 건 그걸 원할 때죠 이미 차단돼 있고 이미 멈췄어요
다음으로 넘어가고 싶죠
다음 줄에 중단점을 두고 재생 버튼을 누르죠
이제 재생 버튼을 눌렀는데 아무 일도 안 일어났어요 입력을 기다리고 있거든요
프로그램엔 엔터라고 나와요
여기서 다섯, 여섯, 일곱을 누르고 엔터 버튼을 누르면 브레이크 포인트를 누르죠
이제 프린트 버튼에 있습니다 프린트 함수로 넘어갈 수 있는 곳이죠
먼저 평균 함수로 넘어가죠
단계적으로 가면 평균 함수로 가는 게 보이죠
네 여러분이 보시게 될 건 변수를 보시면 변수가 변하는 걸 보실 수 있어요
다음 칸으로 가면 27번 칸에 있는 다음 칸으로 가서 28번을 누르고 계속 눌러요
다음으로 점프해 함수의 끝에 있어요
재생을 누르면 프로그램이 완료된 걸 볼 수 있어요 창은 사라졌고요
하지만 변수를 볼 수 있고 다른 모든 걸 볼 수 있어요
print 함수 안에 중단점을 넣을 수도 있어요 바로 여기요
실행해보죠 다시 실행해보면 print 함수가 실행을 멈춥니다 평균 대신에요
네 실제 상황을 볼 수 있어요 응용 프로그램으로
가보면 정보가 인쇄된 걸 볼 수 있죠
그렇죠?
계속하세요 끝까지 달리시면 반환 문서가 나오고 프로그램이 종료될 거예요
그래서 중요합니다 프로그램의 출력을 보고 싶다면 중단점을 설정하고
리턴되기 전에 계속 할 필요가 없어요
빨간 사각형을 눌러서 디버거를 멈출 수 있어요 평행봉 두 개를 눌러서 디버거를 정지시키세요
이 옵션과 호출 스택으로 디버거를 다시 시작할 수 있어요
다시 여기서 더 쉽게 보려면 함수 안에 들어가서 디버거를 실행하세요 디버거를 다시 실행하죠
디버거, 시작, 계속하세요
함수 내부에 정보를 입력한 후에 브레이크 포인트를 누르면 car stack이 메인 파일과 print
파일인 것을 볼 수 있습니다. 전에 보여드렸던 것처럼요.
네 마지막으로 호출된 함수를 볼 수 있죠 이제 많은 함수 등을 가진 프로그램이 있을 때
호출 스택은 이것보다 훨씬 커질 수 있어요
중요한 또 한 가지는 중단점이에요
네 어떤 중단점을 설정했는지 보고 싶다면 모든 중단점과 그게 위치한 전체 프로그램을
보여줄 거예요
하지만 이와 함께 작업해야 합니다 익숙해져야 하고 익숙해져야 하며 꽤 자주 사용해야 합니다 기본
디버깅 기술이나 프로그램으로는 알 수 없는 문제들이 있을 때 말이죠
한 줄씩 차례로 진행되죠
네 한 줄씩 진행하면서 프로그램 종료가 일단 크래시되면 어떤 라인이
종료됐는지 알 수 있어요
네 다시 말씀드리지만 이건 작은 프로그램입니다 하지만 디버깅이 어떻게 작동하는지는 기본적인 이해는 하셔야 해요
도움이 되셨으면 좋겠네요
이런 걸 배우려면 일단 사용해 보는 게 가장 좋아요
이전 과제에서 작업했던 프로그램 하나를 불러 주세요
브레이크 포인트를 추가합니다 아주 간단하죠
내부를 클릭해 브레이크 포인트를 추가하세요
디버그 모드로 시작해 각 줄에서 한 단계씩 변수가 어떻게 바뀌고 콜 스택이 어떻게 증가하는지
보세요
더 큰 기능이 있다면요
고마워요