Main Content

중단점(Breakpoint) 설정하기

R2021b 이후. 중단점 설정하기(R2021a) 및 라이브 편집기에서 코드 디버그하기(R2021a)를 대체합니다.

중단점을 설정하면 MATLAB®의 실행이 일시 중지되므로 문제가 발생할 수 있다고 생각되는 값을 검토할 수 있습니다. 중단점은 편집기 또는 라이브 편집기에서 대화형 방식으로 설정하거나 명령 창에서 함수를 사용하여 설정할 수 있습니다.

중단점에는 다음과 같은 세 가지 유형이 있습니다.

  • 표준

  • 조건부

  • 오류

중단점은 현재 폴더 또는 검색 경로의 폴더에 저장된 파일의 실행 가능한 라인에만 설정할 수 있습니다. MATLAB이 유휴 상태이든, 파일을 실행 중이든지 관계없이 원하는 시점에 중단점을 설정할 수 있습니다.

기본적으로 MATLAB은 중단점에 도달하면 이 중단점이 포함된 파일을 엽니다. 이 옵션을 비활성화하려면 다음을 수행하십시오.

  1. 탭의 환경 섹션에서 기본 설정을 클릭합니다.

  2. 기본 설정 창에서 MATLAB > 편집기/디버거를 선택합니다.

  3. MATLAB이 중단점에 도달할 때 자동으로 파일 열기 옵션의 선택을 취소하고 확인을 클릭합니다.

표준 중단점

표준 중단점은 파일의 특정 라인에서 일시 중지합니다. 표준 중단점을 설정하려면 중단점을 설정하려는 실행 가능한 라인 왼쪽에 있는 회색 영역을 클릭하십시오. 또는 F12 키를 눌러 현재 라인에 중단점을 설정할 수도 있습니다. 주석이나 빈 라인과 같이 실행할 수 없는 라인에 중단점을 설정하려고 하면 MATLAB은 그 다음 실행 가능한 라인에 중단점을 설정합니다.

plotRand script with a red breakpoint at line three

프로그래밍 방식으로 표준 중단점을 설정하려면 dbstop 함수를 사용하십시오. 예를 들어, plotRand.m이라는 파일의 3번 라인에 중단점을 추가하기 위하여 다음을 입력할 수 있습니다.

dbstop in plotRand at 3

루프를 포함하는 파일을 디버그할 때 루프 내에 중단점을 설정하여 루프의 각 증분에서의 값을 검토할 수 있습니다. 또는 루프의 시작 부분에 중단점을 설정하면 MATLAB이 루프 문에서 한 번만 실행을 일시 중지합니다. 예를 들어, 다음 코드는 10개의 1로 구성된 배열을 만든 후 for 루프를 사용하여 배열의 항목 2부터 항목 6까지 계산을 수행합니다.

x = ones(1:10);

for n = 2:6
    x(n) = 2 * x(n-1);
end
MATLAB이 for 루프의 각 증분에서(총 5번) 일시 중지하게 하려면, 4번 라인에 중단점을 설정하십시오.

Script showing a for loop with a red standard breakpoint on the line inside the loop

조건부 중단점(Conditional Breakpoint)

파일의 특정 라인에 조건부 중단점을 설정해 두면 지정된 조건을 충족하는 경우에만 MATLAB의 실행이 일시 중지됩니다. 예를 들어, 루프를 일정 횟수 반복한 후에 결과를 검토하려는 경우 조건부 중단점을 사용할 수 있습니다.

조건부 중단점을 설정하려면 중단점을 설정하려는 실행 가능한 라인 왼쪽에 있는 회색 영역을 마우스 오른쪽 버튼으로 클릭하고 조건부 중단점 설정을 선택하십시오. 해당 라인에 중단점이 이미 있는 경우 조건 설정/수정을 선택합니다. 대화 상자가 열리면 조건을 입력하고 확인을 클릭합니다. 조건은 논리형 스칼라 값을 반환하는 유효한 MATLAB 표현식이어야 합니다.

코드를 실행하면 MATLAB은 라인을 실행하기 전에 조건을 평가합니다. 조건이 충족되면 MATLAB이 디버그 모드로 전환되고 해당 라인에서 일시 중지됩니다. 예를 들어, 다음 코드는 10개의 1로 구성된 배열을 만든 후 for 루프를 사용하여 배열의 항목 2부터 항목 6까지 계산을 수행합니다.

x = one(1:10)

for n = 2:6
    x(n) = 2 * x(n-1);
end

조건 n >= 4를 사용하여 4번 라인에 조건부 중단점을 설정합니다. 코드를 실행하면 MATLAB은 for 루프를 두 번 실행한 후 세 번째 반복에서 n4가 되면 4번 라인에서 일시 중지합니다. 코드를 계속 실행할 경우 MATLAB은 네 번째 반복에서 n5가 되면 4번 라인에서 다시 일시 중지하고 n6이 되면 한 번 더 일시 중지합니다.

Script with a for loop with an orange conditional breakpoint on the line inside the loop

또한 dbstop 함수를 사용하여 프로그래밍 방식으로 조건부 중단점을 설정할 수도 있습니다. 예를 들어, myprogram.m의 6번 라인에 조건부 중단점을 추가하기 위하여 다음을 입력할 수 있습니다.

dbstop in myprogram at 6 if n>=4

오류 중단점

편집기에서 오류 중단점을 설정해 두면 MATLAB에서 문제가 발견될 경우 MATLAB이 일시 중지되고 디버그 모드로 전환할 수 있습니다. 오류 중단점을 설정하는 것은 라이브 편집기에서 지원되지 않습니다.

표준 중단점이나 조건부 중단점과 달리, 오류 중단점은 특정 라인이나 특정 파일에 설정되지 않습니다. 오류 중단점을 설정해 두면, 지정된 조건의 오류가 발생할 경우 임의 파일의 임의 라인에서 MATLAB이 일시 중지됩니다. 그런 다음 MATLAB은 디버그 모드로 전환되고 오류가 포함된 파일이 열리며, 오류가 포함된 라인에 실행 화살표가 표시됩니다.

오류 중단점을 설정하려면 편집기 탭에서 실행 을 클릭하고 다음 옵션을 선택하십시오.

  • 오류 발생 시 일시 중지 - 모든 오류에서 일시 중지합니다.

  • 경고 발생 시 일시 중지 - 모든 경고에서 일시 중지합니다.

  • NaN 또는 Inf 반환 시 일시 중지 - NaN(Not-a-Number) 또는 Inf(무한대) 값에서 일시 중지합니다.

또는 dbstop 함수를 지정된 condition과 함께 사용하여 프로그래밍 방식으로 오류 중단점을 설정할 수 있습니다. 예를 들어, 모든 오류에서 실행을 일시 중지하려면 다음을 입력하십시오.

dbstop if error
try/catch 블록의 try 부분 내에서 메시지 ID가 MATLAB:ls:InputsMustBeStrings인 첫 번째 런타임 오류가 발생한 경우에 실행을 일시 중지하려면 다음을 입력하십시오.
dbstop if caught error MATLAB:ls:InputsMustBeStrings

익명 함수의 중단점

익명 함수가 포함된 MATLAB 코드 라인에 여러 개의 중단점을 설정할 수 있습니다. 라인 자체 그리고 라인의 각 익명 함수에 대해 중단점을 설정할 수 있습니다.

익명 함수가 있는 라인에 중단점을 설정하려면 라인 왼쪽에 있는 회색 영역을 클릭하십시오. MATLAB은 라인에는 중단점을, 라인의 각 익명 함수에는 비활성화된 중단점을 추가합니다. 익명 함수에서 중단점을 활성화하려면 해당 함수에 대해 비활성화된 중단점을 클릭하십시오.

라인의 모든 중단점에 대한 정보를 확인하려면 중단점 아이콘에 커서를 놓으십니다. 제공 가능한 정보가 툴팁에 표시됩니다. 예를 들어, 이 코드의 7번 라인에는 각각 하나의 중단점을 가지는 익명 함수가 두 개 있습니다.

Script showing a line of code with two anonymous functions, with red breakpoints displayed on the line number and before each of the two anonymous functions. A tooltip displays information about the breakpoints.

익명 함수에 중단점을 설정하면 익명 함수가 호출될 때 MATLAB이 일시 중지됩니다. 녹색으로 강조 표시된 라인은 코드가 익명 함수를 정의한 위치입니다. 회색으로 강조 표시된 라인은 코드가 익명 함수를 호출한 위치입니다. 예를 들어 아래 코드의 경우, MATLAB은 7번 라인에서 정의되고 8번 라인에서 호출된 익명 함수 g에 대해 설정된 중단점에서 프로그램을 일시 중지합니다.

Script showing a line of code with two anonymous functions. The line has a green arrow and green highlighting, indicating that MATLAB is paused at that line. The line below it is highlighted in gray, indicating that it is the line that called the anonymous functions.

유효하지 않은 중단점

진한 회색 중단점은 유효하지 않은 중단점을 나타냅니다.

Script showing a dark gray, invalid breakpoint at line three

중단점은 다음과 같은 경우 유효하지 않게 됩니다.

  • 파일에 저장되지 않은 변경 내용이 있습니다. 중단점을 유효하게 만들려면 파일을 저장하십시오. 그러면 회색 중단점이 빨간색이 되어, 이제 유효함을 나타냅니다.

  • 파일에 구문 오류가 있습니다. 중단점을 설정할 때 구문 오류가 있는 위치를 나타내는 오류 메시지가 나타납니다. 중단점을 유효하게 만들려면 구문 오류를 수정하고 파일을 저장하십시오.

중단점 사용 안 함

선택한 중단점을 사용 안 하도록 설정하여 프로그램이 일시적으로 중단점을 무시하고 실행을 계속하도록 할 수 있습니다. 예를 들어, 문제를 확인하고 바로잡았다고 생각되거나 조건부 중단점을 사용할 경우 중단점을 사용 안 하도록 설정할 수 있습니다.

중단점을 사용하지 않으려는 경우에는 중단점 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 중단점 사용 안 함을 선택하십시오.

그러면 중단점이 연한 회색으로 변해 비활성화되었음을 나타냅니다.

Script showing a light gray, disabled breakpoint at line three

중단점을 다시 사용하려는 경우에는 중단점 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 중단점 사용을 선택하십시오.

회색 중단점이 빨간색으로 변하며 그 라인에서 프로그램 실행이 일시 중지됩니다.

파일의 모든 중단점을 활성화 또는 비활성화하려면 실행 가능한 라인 왼쪽에 있는 회색 영역을 마우스 오른쪽 버튼으로 클릭하고 파일에 있는 중단점 모두 사용 또는 파일에 있는 중단점 모두 사용 안 함을 선택하십시오. 이들 옵션은 활성화 또는 비활성화가 가능한 중단점이 하나 이상인 경우에만 사용할 수 있습니다.

중단점 지우기

모든 중단점은 직접 지우거나(제거하거나) MATLAB 세션의 끝에 자동으로 지워지기 전까지 파일에 그대로 유지됩니다.

중단점을 지우려면 중단점 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 중단점 지우기를 클릭하십시오. F12 키를 눌러 중단점을 지울 수도 있습니다.

프로그래밍 방식으로 중단점을 지우려면 dbclear 함수를 사용하십시오. 예를 들어, myprogram.m이라는 파일의 6번 라인에서 중단점을 지우려면 다음을 입력하십시오.

 dbclear in myprogram at 6

파일에 있는 모든 중단점을 지우려면 중단점 표시줄을 마우스 오른쪽 버튼으로 클릭하고 파일에 있는 중단점 모두 지우기를 선택하십시오. dbclear all 명령을 사용할 수도 있습니다. 예를 들어, myprogram.m이라는 파일에서 중단점을 모두 지우려면 다음을 입력하십시오.

dbclear all in myprogram

오류 중단점을 포함하여 모든 파일에서 모든 중단점을 지우려면 중단점 표시줄을 마우스 오른쪽 버튼으로 클릭하고 중단점 모두 지우기를 선택하십시오. dbclear all 명령을 사용할 수도 있습니다.

MATLAB 세션이 종료되면 중단점이 자동으로 지워집니다. 앞으로의 세션에 사용할 중단점을 저장하려면 dbstatus 함수를 사용하십시오.

관련 항목