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 2 and the resulting output, the value of r and the plot, displayed on the right

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

코드의 특정 지점을 기준으로 작업 공간에서 모든 변수의 상태를 탐색하려면 코드 파일을 실행한 다음, 일시 중지하십시오. 코드를 특정 라인까지 실행한 후 일시 중지하려면 라인 왼쪽의 여기까지 실행 버튼 을 클릭하십시오. 선택한 라인에 도달할 수 없는 경우, MATLAB은 파일 끝이나 중단점에 도달할 때까지 계속 실행됩니다.

디버그할 때는 여기까지 실행 버튼 이 여기까지 계속 실행 버튼 으로 바뀝니다. 함수 및 클래스에서는 여기까지 계속 실행 버튼 을 사용하여 디버그할 때에만 지정된 라인까지 실행한 후 일시 중지할 수 있습니다. R2021a와 그 이전 릴리스에서는 디버그할 때 커서가 있는 위치까지 실행한 후 일시 중지하려면 편집기 탭으로 이동하고 커서까지 실행 버튼 을 클릭하십시오.

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

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

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

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

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

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

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

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

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

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

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

디버그 중 변수 값 보기

MATLAB이 일시 중지된 상태에서 변수 값을 보려면 커서를 변수 위에 놓으십시오. 데이터팁에 현재 변수 값이 표시됩니다. 커서를 이동할 때까지 데이터팁이 표시된 상태로 유지됩니다.

plotRand script paused at line 2 with a data tip showing the size, data type, and value of the variable n

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

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

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

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

참고

일시 중지 버튼을 클릭하면 MATLAB이 자신이 작성한 코드 외부의 지점에서 파일을 일시 중지할 수 있습니다. 또한 MATLAB이 일시 중지되고 일시 중지 버튼이 계속 버튼으로 바뀔 때까지 상당한 지연이 발생할 수 있습니다. 경우에 따라 MATLAB이 전혀 일시 중지하지 않을 수도 있습니다. 그 이유는 MATLAB이 일부 내장 코드를 일시 중지할 수 없기 때문입니다.

함수로 이동하기

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

기본적으로 스텝 인 버튼 은 사용자 정의 함수 및 스크립트에만 표시됩니다. 모든 함수 및 스크립트에 버튼을 표시하려면 탭의 환경 섹션에서 기본 설정을 클릭하십시오. 그런 다음, MATLAB > 편집기/디버거를 선택하고 디버그 섹션에서 인라인 스텝 인 버튼 표시 옵션을 항상으로 설정합니다. 버튼을 표시하지 않으려면 인라인 스텝 인 버튼 표시 옵션을 안 함으로 설정하십시오.

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

함수 호출 스택

호출된 함수 또는 호출된 파일로 이동하면 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 3

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

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

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

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

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

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

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

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

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

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

디버그 세션 종료하기

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

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

MATLAB Online에서 디버거 패널을 사용하여 디버그하기

MATLAB Online™에서 디버거 패널을 사용하여 디버깅 중에 중단점을 관리하고 함수 호출 스택을 탐색할 수 있습니다.

기본적으로 MATLAB이 디버그 모드로 전환될 때 디버거 패널이 자동으로 열립니다. 디버거 패널을 수동으로 열려면 편집기 탭이나 라이브 편집기 탭으로 이동한 후 분석 섹션에서 디버거를 클릭합니다. 또는 사이드바의 패널 더 열기 버튼(three-dot icon)을 사용하여 패널을 열 수 있습니다. 기본적으로 디버거 패널은 데스크탑 오른쪽에 열립니다. 디버거 패널을 숨기려면 사이드바에서 디버거 아이콘을 클릭하십시오.

Debugger panel showing a Breakpoints section and a Function call stack section. The Breakpoints section shows Pause on Errors selected, as well as three enabled breakpoints in the plotRand.m file. The Function call stack section shows that the debugger is paused at line 9 of plotRand.m. The Debugger icon is visible in the sidebar.

패널의 중단점 섹션에는 모든 MATLAB 코드 파일의 중단점이 나열되어 있습니다. 섹션의 처음 3개 중단점(오류 발생 시 일시 중지, 경고 발생 시 일시 중지, NaN 또는 Inf 반환 시 일시 중지)은 오류 중단점입니다. 이러한 중단점 중 하나를 사용하면, 지정된 조건의 오류가 발생할 경우 임의 파일의 임의 라인에서 MATLAB이 일시 중지됩니다. 나머지 중단점은 파일별로 그룹화됩니다.

목록의 각 중단점에 대해 다음 동작을 수행할 수 있습니다.

  • 중단점 사용 또는 사용 안 함 — 중단점을 사용하려면 중단점 옆에 있는 체크박스를 선택하고, 중단점을 사용하지 않으려면 체크박스를 선택 해제합니다.

  • 중단점 지우기 — 중단점을 지우려면 중단점을 선택하고 디버거 패널 상단에서 지우기 버튼 을 클릭합니다. 모든 중단점을 지우려면 지우기 버튼 옆에 있는 drop-down arrow을 클릭하고 중단점 모두 지우기를 선택합니다. 오류 중단점은 지울 수 없습니다.

  • 파일의 중단점으로 이동 — 중단점 오른쪽에 있는 하이퍼링크 라인 번호를 클릭하여 파일을 열고 중단점이 포함된 코드 라인으로 이동합니다.

  • 중단점 조건 설정 또는 수정 — 중단점을 마우스 오른쪽 버튼으로 클릭하고 조건 설정/수정을 선택하여 선택한 중단점에 대한 조건을 입력하거나 수정합니다.

중단점에 대한 자세한 내용은 중단점(Breakpoint) 설정하기 항목을 참조하십시오.

함수 호출 스택 섹션에는 MATLAB이 현재 라인에서 일시 중지되기 전까지 실행한 함수 목록이 나와 있습니다. 함수는 MATLAB이 일시 중지된 현재 스크립트나 함수부터 처음 호출된 스크립트나 함수까지 목록의 위에서 아래로 순서대로 표시됩니다. 함수 호출 스택 내의 각 함수마다 이에 대응하는 작업 공간이 있습니다. 함수 호출 스택 내의 함수에 대한 작업 공간을 보려면 목록에서 해당 함수를 선택하십시오. 함수 호출 스택에 대한 자세한 내용은 함수 호출 스택 항목을 참조하십시오.

자동으로 디버거 패널 열기를 비활성화하려면 디버거 패널의 왼쪽 상단에 있는 디버거 구성 버튼을 클릭하고 자동으로 디버거 패널 열기 옵션의 선택을 해제하십시오. 또는 기본 설정 창의 MATLAB > 편집기/디버거 페이지에서 이 옵션을 비활성화할 수 있습니다.

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

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

동작설명바로 가기 키함수

계속

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

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

관련 항목

외부 웹사이트