이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

라이브 편집기에서 코드 디버그하기

라이브 스크립트 또는 라이브 함수에서 문제를 진단하려면 라이브 편집기에서 코드를 디버그하십시오. 라이브 편집기에서 디버그하는 방법은 다음과 같습니다.

  • 세미콜론을 제거하여 출력값을 표시합니다.

  • 코드의 특정 라인까지 실행하고 버튼을 사용하여 일시 중지합니다.

  • 일시 중지 상태에서 버튼을 사용하여 함수와 스크립트로 이동합니다.

  • 파일을 실행할 때 특정 라인에서 일시 중지할 수 있도록 파일에 중단점을 추가합니다.

출력값 표시하기

라이브 스크립트 또는 라이브 함수에서 문제가 발생한 위치를 간단하게 확인할 수 있는 방법은 출력값을 표시하는 것입니다. 어떤 라인의 출력값을 표시하려면 그 라인의 끝에 있는 세미콜론을 제거하십시오. 라이브 편집기에서는 각 출력값을 생성한 코드의 라인과 함께 출력값이 표시되기 때문에 문제 발생 위치를 확인하기 쉽습니다.

예를 들어, 임의의 벡터 데이터를 플로팅하고 플롯에서 평균에 해당하는 가로선을 그리는 randomdata.mlx 스크립트가 있다고 가정해 보겠습니다.

2번 라인의 rand 함수 출력값을 표시하려면 라인 끝에 있는 세미콜론을 제거하십시오. 라이브 편집기에 라인 번호가 표시되지 않는 경우, 번호를 표시하려면 보기(View) 탭으로 이동하여 라인 번호(Line Number) 버튼을 누르십시오. 그러면 MATLAB®r의 값을 표시합니다.

여기까지 실행(Run to Here)을 사용하여 디버그하기

단일 변수의 상태를 표시하려는 경우에는 출력값을 표시하는 방법이 유용합니다. 작업 공간에서 모든 변수의 상태를 탐색하려면 라이브 스크립트 또는 라이브 함수를 실행한 다음, 코드의 특정 라인이 실행되기 전에 일시 중지하십시오.

코드의 특정 라인까지 실행한 후 일시 중지하려면 라인 왼쪽의 버튼을 클릭하십시오. 선택한 라인에 도달할 수 없는 경우, MATLAB은 파일 끝에 도달하거나 중단점이 나타날 때까지 계속 실행됩니다.

예를 들어, randomdata.mlx에서 2번 라인 왼쪽의 버튼을 클릭합니다. 그러면 MATLAB은 1번 라인부터 randomdata.mlx를 실행하고 2번 라인을 실행하기 전에 일시 중지됩니다.

MATLAB이 일시 중지되면 라이브 편집기(Live Editor) 탭의 실행(Evaluate) 버튼이 계속(Continue) 버튼으로 변경됩니다. 라이브 편집기는 MATLAB에서 일시 중지된 라인을 녹색으로 강조 표시합니다. 강조 표시된 라인은 MATLAB이 실행을 재개해야 실행됩니다.

MATLAB이 일시 중지된 상태에서는 파일을 수정하지 않는 것이 좋습니다. MATLAB이 일시 중지된 상태에서 변경된 사항은 MATLAB이 일시 중지된 코드 실행을 완료한 후 해당 코드를 다시 실행하기 전까지는 실행되지 않습니다.

코드 실행을 계속하려면 계속(Continue) 버튼을 클릭하십시오. 그러면 MATLAB은 파일 끝 또는 중단점에 도달할 때까지 파일을 계속 실행합니다. 또는 코드에서 실행 중단하고자 하는 지점에 있는 라인의 왼쪽에 있는 버튼을 클릭해도 됩니다.

코드를 계속 라인 단위로 실행하려면 라이브 편집기(Live Editor) 탭에서 스텝(Step)을 클릭하십시오. 그러면 MATLAB은 일시 중지된 위치에서 현재 라인을 실행하고 다음 라인에서 일시 중지됩니다.

디버그 중 변수 값 보기

MATLAB이 일시 중지된 상태에서 변수 값을 보려면 마우스 포인터를 변수 위에 올려놓으십시오. 데이터팁에 현재 변수 값이 표시됩니다. 포인터를 이동할 때까지 데이터팁이 표시된 상태로 유지됩니다. 데이터팁을 비활성화하려면 보기(View) 탭으로 이동하여 데이터팁(Datatip) 버튼을 누르십시오.

명령 창에 변수 이름을 입력하여 변수 값을 볼 수도 있습니다. 예를 들어, 변수 n의 값을 보려면 n을 입력하고 Enter 키를 누르십시오. 명령 창에 변수 이름과 해당 값이 표시됩니다. 현재 작업 공간에 있는 변수를 모두 보려면 작업 공간 브라우저를 사용하십시오.

실행 중인 파일 일시 중지하기

실행 중인 프로그램을 일시 중지하려면 라이브 편집기(Live Editor) 탭으로 이동하여 일시 중지(Pause) 버튼을 클릭하십시오. 그러면 MATLAB이 실행 가능한 다음 라인에서 일시 중지되고 일시 중지(Pause) 버튼이 계속(Continue) 버튼으로 바뀝니다. 계속 실행하려면 계속(Continue) 버튼을 누르십시오.

일시 중지 기능은 긴 시간 동안 실행되는 프로그램의 진행 상황을 점검하여 예상대로 실행되고 있는지 확인하려는 경우 유용합니다.

참고

일시 중지 버튼을 클릭하면 MATLAB이 사용 중인 프로그램 파일 외의 다른 파일이 일시 중지될 수도 있습니다. 계속(Continue) 버튼을 누르면 파일의 결과가 달라지지 않고 실행이 재개됩니다.

디버그 세션 종료하기

문제를 확인한 뒤에는 라이브 편집기(Live Editor) 탭으로 이동하여 중지(Stop)를 클릭하고 디버그 세션을 종료합니다. 혼동을 피할 수 있도록 디버그 작업을 완료할 때마다 디버그 세션을 종료하십시오. 저장하면 라이브 편집기는 자동으로 디버그 세션을 종료합니다.

함수로 이동하기

디버그 시, 사용자는 호출된 파일로 이동하여 값을 검토하고자 하는 지점에서 일시 중지할 수 있습니다. 파일로 이동하려면 이동하려는 함수 왼쪽에서 직접 버튼을 클릭하십시오. 라인에 다른 함수에 대한 호출이 포함되어 있으면 라이브 편집기는 이 버튼만을 표시합니다.

기본적으로 라이브 편집기는 사용자 정의 함수와 사용자 정의 스크립트로만 이동합니다. MathWorks® 함수로도 이동할 수 있도록 하려면 홈(Home) 탭의 환경(Environment) 섹션에서 기본 설정(Preferences)을 클릭하십시오. 그런 다음, MATLAB > 편집기/디버거(Editor/Debugger)를 선택하고 라이브 편집기에서 디버그(Debugging in the Live Editor) 섹션에서 사용자 정의 함수에 대해서만 [스텝 인] 버튼 표시 선택을 취소합니다.

이동한 후 파일 상단의 버튼을 클릭하면 호출된 함수의 나머지 부분을 실행하고 호출된 함수에서 나간 다음, 실행을 일시 중지합니다.

작업 공간에서 변수 검토하기

호출된 함수 또는 호출된 파일로 이동하면 MATLAB이 현재 라인에서 일시 중지되기 전까지 실행한 함수 목록이 라이브 편집기에 표시됩니다. 파일 상단의 이 목록에는 함수가 순서대로 표시됩니다. 다시 말해, 처음 호출된 스크립트나 함수부터 MATLAB이 일시 중지된 현재 스크립트나 함수까지 왼쪽에서 오른쪽 방향으로 표시됩니다. 이 목록을 함수 호출 스택이라고 합니다.

함수 호출 스택 내의 각 함수마다 이에 대응하는 작업 공간이 있습니다. 작업 공간에는 MATLAB 내에서 생성한 변수, 또는 데이터 파일이나 다른 프로그램에서 가져온 변수가 있습니다. 명령 창을 통해 할당된 변수나 스크립트를 통해 생성된 변수는 기본 작업 공간(Base Workspace)에 속합니다. 함수에서 생성된 변수는 그 함수 고유의 작업 공간에 속합니다.

디버그 중 변수를 검토하려면, 먼저 해당 작업 공간을 선택해야 합니다. 함수 호출 스택에서 선택되어 있는 함수는 현재 작업 공간을 나타냅니다. 작업 공간을 선택하거나 변경하려면 함수 호출 스택에서 함수를 클릭하십시오. 그러면 MATLAB이 라이브 편집기에서 함수를 열고 현재 작업 공간을 이 함수의 작업 공간으로 변경합니다.

작업 공간을 선택하면 작업 공간 브라우저 또는 라이브 편집기의 데이터팁을 통해 작업 공간의 변수 값을 볼 수 있습니다.

중단점 추가하기 및 실행하기

파일에 실행할 때마다 일시 중지하려는 코드 라인이 있으면 이 라인에 중단점을 추가하십시오. 라이브 편집기에서 중단점을 추가하려면 중단점을 설정할 실행 가능한 라인 왼쪽에 있는 회색 영역을 클릭하십시오. 예를 들어, 이 코드에서 3번 라인에 중단점을 추가하려면 이 라인 옆의 영역을 클릭합니다.

파일을 실행하면 MATLAB은 중단점이 나타내는 코드의 라인에서 일시 중지됩니다.

중단점 지우기

파일을 닫았다가 다시 열면 중단점이 저장된 것을 볼 수 있습니다.

중단점을 지우려면 중단점을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 중단점 지우기(Clear Breakpoint)를 선택하십시오. 파일에 있는 모든 중단점을 지우려면 파일에 있는 중단점 모두 지우기(Clear All in File)를 선택하십시오. 모든 파일에 있는 중단점을 모두 지우려면 모두 지우기(Clear All)를 선택하십시오.

MATLAB 세션이 종료되면 중단점이 자동으로 지워집니다.

중단점 사용 안 함

선택한 중단점을 사용 안 하도록 설정하여 프로그램이 일시적으로 중단점을 무시하고 실행을 계속하도록 할 수 있습니다. 예를 들어, 문제를 확인하고 수정한 경우 중단점을 사용하지 않도록 설정할 수 있습니다.

중단점을 사용하지 않으려는 경우에는 중단점을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 중단점 사용 안 함(Disable Breakpoint)을 선택하십시오. 그러면 중단점이 회색으로 변해 비활성화되었음을 나타냅니다.

중단점을 다시 활성화하려면 중단점을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 중단점 사용(Enable Breakpoint)을 선택하십시오. 파일의 모든 중단점을 활성화 또는 비활성화하려면 파일에 있는 중단점 모두 사용(Enable All in File) 또는 파일에 있는 중단점 모두 사용 안 함(Disable All in File)을 선택하십시오. 이 옵션은 활성화 또는 비활성화가 가능한 중단점이 하나 이상인 경우에만 사용할 수 있습니다.

조건부 중단점 추가하기

사용자는 MATLAB이 지정된 라인에서 일시 중지할 때 고려할 조건을 중단점에 추가할 수 있습니다. 조건을 추가하려면 중단점을 마우스 오른쪽 버튼으로 클릭하고 조건 설정/수정(Set/Modify Condition)을 선택하십시오. 편집기 대화 상자가 열리면 조건을 입력하고 확인(OK)을 클릭합니다. 조건은 논리형 스칼라 값을 반환하는 유효한 MATLAB 표현식이어야 합니다. MATLAB은 라인을 실행하기 전에 이 조건을 평가합니다.

예를 들어, randomdata.mlx에서 임의로 생성된 데이터에 0이 포함된 경우에만 일시 중지하려는 경우를 가정해 보겠습니다.

3번 라인에 다음 조건의 중단점을 추가합니다.

any(r == 0)
노란색 조건부 중단점이 3번 라인에 나타납니다.

파일을 실행하면 조건이 충족되는 경우에 MATLAB이 지정된 라인에서 일시 중지됩니다. 예를 들어, randomdata 예제에서 r의 값 중 하나라도 0이면 MATLAB은 3번 라인을 실행하기 전에 일시 중지됩니다.

관련 항목