Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

MATLAB 코드 파일 디버그하기

R2021b 이후. MATLAB 프로그램 디버그하기(R2021a) 및 라이브 편집기에서 코드 디버그하기(R2021a)를 대체합니다.

코드를 편집기 및 라이브 편집기에서 대화형 방식으로 디버그하거나 명령 창에서 디버그 함수를 프로그래밍 방식으로 사용하여 MATLAB® 코드 파일 내 문제를 진단할 수 있습니다.

코드를 디버그하는 방법에는 여러 가지가 있습니다.

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

  • 코드를 특정 라인까지 실행하고 여기까지 실행 버튼을 클릭하여 일시 중지합니다.

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

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

디버그를 시작하기 전에, 예기치 않은 결과를 피하려면 코드 파일을 저장하고 코드 파일과 코드 파일이 호출하는 모든 파일이 검색 경로나 현재 폴더에 있는지 확인하십시오. MATLAB은 디버그를 수행하는 위치에 따라, 저장되지 않은 변경 사항을 다르게 처리합니다.

  • 편집기 — 파일에 저장하지 않은 변경 사항이 있는 경우 MATLAB은 파일을 실행하기 전에 저장합니다.

  • 라이브 편집기 — 변경 사항이 저장되었는지 여부에 관계없이 MATLAB은 파일의 모든 변경 사항을 실행합니다.

  • 명령 창 — 파일에 저장하지 않은 변경 사항이 있는 경우 MATLAB은 그 파일의 저장된 버전을 실행합니다. 변경 사항이 적용된 결과가 표시되지 않습니다.

출력값 표시하기

MATLAB 코드 파일에서 문제가 발생한 위치를 확인할 수 있는 방법은 출력값을 표시하는 것입니다. 어떤 라인의 출력값을 표시하려면 그 라인의 끝에 있는 세미콜론을 제거하십시오. 편집기에서는 MATLAB이 명령 창에 출력값을 표시합니다. 라이브 편집기에서는 MATLAB이 출력값을 그 출력값을 생성한 코드의 라인과 함께 표시합니다.

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

n = 50;
r = rand(n,1);
plot(r)

m = mean(r);
hold on
plot([0,n],[m,m])
hold off
title('Mean of Random Uniform Data')

2번 라인의 rand 함수 출력값을 표시하려면 라인 끝에 있는 세미콜론을 제거하십시오. 그러면 MATLAB은 명령 창에 r 값을 표시합니다.

Command window showing a call to the plotRand function followed by the resulting output, the value of r

라이브 편집기에서는 MATLAB이 2번 라인과 함께 r의 값을 표시합니다.

plotRand live script with the semicolon removed from the end of line two and the resulting output, the value of r, displayed on the right

여기까지 실행 버튼을 사용하여 디버그하기

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

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

참고

함수 및 클래스에서 여기까지 실행 버튼은 디버그할 때만 사용할 수 있습니다.

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

plotRand script with the Run to Here button displayed in the left margin, next to the line number for line two

MATLAB이 일시 중지되면 다음과 같이 여러 변경 사항이 발생합니다.

  • 편집기 탭 또는 라이브 편집기 탭의 실행 버튼이 계속 버튼으로 변경됩니다.

  • 명령 창의 프롬프트가 MATLAB이 디버그 모드에 있으며 키보드를 제어할 수 있음을 나타내는 K>>로 변경됩니다.

  • MATLAB에서 일시 중지된 라인은 녹색 화살표로 표시되고 녹색으로 강조 표시됩니다.

    plotRand script with a green arrow and green highlighting on line two, indicating that MATLAB is paused at line two

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

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

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

plotRand script with a green arrow and green highlighting on line three, indicating that MATLAB is paused at line three

디버그 중 변수 값 보기

MATLAB이 일시 중지된 상태에서 변수 값을 보려면 커서를 변수 위에 놓으십시오. 데이터팁에 현재 변수 값이 표시됩니다. 커서를 이동할 때까지 데이터팁이 표시된 상태로 유지됩니다. 데이터팁을 비활성화하려면 보기 탭으로 이동하여 데이터팁 버튼을 클릭하여 끄십시오.

plotRand script paused at line two with a data tip showing the value of the variable n

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

자세한 내용은 디버그 중 값 검토하기 항목을 참조하십시오.

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

긴 시간 동안 실행되는 코드를 실행 중에 일시 중지하여 진행 상황을 점검하고 예상대로 실행되고 있는지 확인할 수 있습니다. 실행 중인 코드를 일시 중지하려면 편집기 탭이나 라이브 편집기 탭으로 이동하여 일시 중지 버튼을 클릭하십시오. 그러면 MATLAB이 실행 가능한 다음 라인에서 일시 중지되고 일시 중지 버튼이 계속 버튼으로 바뀝니다. 코드를 계속 실행하려면 계속 버튼을 누르십시오.

참고

일시 중지 버튼을 클릭하면 MATLAB이 자신이 작성한 코드 외부의 지점에서 파일을 일시 중지할 수 있습니다.

함수로 이동하기

디버그 시, 사용자는 호출된 파일로 이동하여 값을 검토하고자 하는 지점에서 일시 중지할 수 있습니다. 파일로 이동하려면 이동하려는 함수 바로 왼쪽에 있는 스텝 인 버튼을 클릭하십시오. 라인에 다른 함수에 대한 호출이 포함되어 있는 경우에만 MATLAB에 이 버튼이 표시됩니다. 이동한 후 파일 상단의 스텝 아웃 버튼을 클릭하여 호출된 함수의 나머지 부분을 실행하고 호출된 함수에서 나간 다음, 실행을 일시 중지합니다.

기본적으로 스텝 인 버튼은 사용자 정의 함수 및 스크립트에만 사용할 수 있습니다. MathWorks® 함수에서 버튼을 활성화하려면 탭의 환경 섹션에서 기본 설정을 클릭하십시오. 그런 다음, MATLAB > 편집기/디버거를 선택하고 디버그 섹션에서 사용자 정의 함수에 대해서만 상황별 [스텝 인] 버튼 표시 옵션의 선택을 취소합니다.

또는 편집기 탭이나 라이브 편집기 탭에서 스텝 인 또는 스텝 아웃 버튼을 사용하여 디버그 중에 함수에 대해 스텝 인과 스텝 아웃을 수행할 수도 있습니다. 이 버튼은 사용자 정의 함수에 대해서만 상황별 [스텝 인] 버튼 표시 기본 설정을 적용하지 않고 항상 사용자 정의 함수와 MathWorks 함수에 대해 스텝 인과 스텝 아웃을 수행합니다.

함수 호출 스택(Function Call Stack)

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

Function call stack for plotRand showing plotRand as the first called script and mean as the current function

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

다른 작업 공간을 선택하여 현재 작업 공간의 외부에 있는 변수 값을 검사할 수 있습니다. 자세한 내용은 디버그 중 값 검토하기 항목을 참조하십시오.

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

파일에 코드를 실행할 때마다 일시 중지하려는 코드 라인이 있으면 이 라인에 중단점을 추가하십시오. 중단점은 편집기 또는 라이브 편집기를 사용하여 대화형 방식으로 추가하거나, 명령 창에서 함수를 사용하여 프로그래밍 방식으로 추가하거나, 이 두 방법을 모두 사용하여 추가할 수 있습니다.

중단점은 세 가지 유형, 즉 표준 중단점, 조건부 중단점, 오류 중단점으로 나뉩니다. 편집기 또는 라이브 편집기에서 표준 중단점을 추가하려면 중단점을 설정하려는 실행 가능한 라인 왼쪽에 있는 회색 영역을 클릭하십시오. 예를 들어, plotRand.m에서 3번 라인에 중단점을 추가하려면 이 라인 옆의 영역을 클릭합니다.

plotRand script with a red breakpoint at line three

파일을 실행하면 MATLAB은 중단점이 나타내는 코드의 라인에서 일시 중지됩니다. MATLAB이 일시 중지된 라인은 해당 코드를 계속 실행하기 전까지는 실행되지 않습니다.

예를 들어, 편집기에서 plotRand.m 파일을 연 상태에서 편집기 탭의 실행 버튼을 클릭합니다. 그러면 MATLAB은 1번 라인부터 plotRand.m을 실행하고 3번 라인을 실행하기 전에 일시 중지됩니다.

MATLAB이 일시 중지되면 다음과 같이 여러 변경 사항이 발생합니다.

  • 편집기 탭 또는 라이브 편집기 탭의 실행 버튼이 계속 버튼으로 변경됩니다.

  • 명령 창의 프롬프트가 MATLAB이 디버그 모드에 있으며 키보드를 제어할 수 있음을 나타내는 K>>로 변경됩니다.

  • MATLAB에서 일시 중지된 라인은 녹색 화살표로 표시되고 녹색으로 강조 표시됩니다.

    plotRand script with a breakpoint at line three and a green arrow and green highlighting on line three, indicating that MATLAB is paused at line three

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

코드 실행을 계속하려면 계속 버튼을 클릭하십시오. 그러면 MATLAB은 파일 끝 또는 중단점에 도달할 때까지 파일을 계속 실행합니다. 코드를 계속 라인 단위로 실행하려면 편집기 탭이나 라이브 편집기 탭에서 스텝을 클릭하십시오. 그러면 MATLAB은 일시 중지된 위치에서 현재 라인을 실행하고 다음 라인에서 일시 중지됩니다.

여러 유형의 중단점 및 이러한 중단점을 설정하고 지우고 비활성화하는 방법에 대한 자세한 내용은 중단점(Breakpoint) 설정하기 항목을 참조하십시오.

디버그 세션 종료하기

문제를 확인한 뒤에 디버그 세션을 종료하려면 편집기 탭이나 라이브 편집기 탭으로 이동하여 중지를 클릭하십시오. 디버그를 종료하고 나면 명령 창에 K>> 프롬프트 대신 일반 프롬프트 >>가 다시 나타납니다. 그러면 함수 호출 스택에 더 이상 액세스할 수 없습니다.

혼동을 피할 수 있도록 디버그 작업을 완료할 때마다 디버그 세션을 종료하십시오. 디버그 중에 파일을 변경하고 저장하는 경우 MATLAB은 디버그 세션을 종료합니다. MATLAB이 일시 중지된 상태에서 응답하지 않는 경우 Ctrl+C를 눌러 디버그를 종료하십시오.

바로 가기 키 또는 함수를 사용하여 디버그하기

대부분의 디버그 동작은 바로 가기 키를 사용하거나 명령 창에서 함수를 사용하여 수행할 수 있습니다. 다음 표에는 디버그 동작과 이러한 디버그 동작을 수행하는 데 사용할 수 있는 관련 바로 가기 키 및 함수가 설명되어 있습니다.

동작설명바로 가기 키함수

계속

파일이 파일 끝에 도달하거나 다른 중단점이 나타날 때까지 계속 실행됩니다.

F5

dbcont

스텝

코드의 현재 라인을 실행합니다.

F10

(macOS 시스템에서는 Shift+Command+O)

dbstep

스텝 인

코드의 현재 라인을 실행하는데, 이 라인에 다른 함수에 대한 호출이 포함되어 있는 경우 해당 함수로 이동합니다.

F11

(macOS 시스템에서는 Shift+Command+I)

dbstep in

스텝 아웃

스텝 인 이후, 호출된 함수의 나머지 부분을 실행하고, 호출된 함수에서 벗어난 후 일시 중지합니다.

Shift+F11

(macOS 시스템에서는 Shift+Command+U)

dbstep out

중지

디버그 세션을 종료합니다.

Shift+F5

dbquit

중단점 설정

중단점이 없는 경우 현재 라인에 중단점을 설정합니다.

F12

dbstop

중단점 지우기

현재 라인에서 중단점을 지웁니다.

F12

dbclear

관련 항목