Main Content

dbstop

디버그에 사용할 중단점(Breakpoint) 설정

설명

예제

dbstop in filefile의 실행 가능한 첫 번째 라인에 중단점을 설정합니다. file을 실행하는 경우 MATLAB®은 디버그 모드로 전환되고, 중단점에서 실행을 일시 중지하고, 일시 중지된 라인을 표시합니다.

예제

dbstop in file at location은 지정된 위치에 중단점을 설정합니다. MATLAB은 해당 위치가 익명 함수가 아닌 경우 그 위치의 바로 앞에서 실행을 일시 중지합니다. 해당 위치가 익명 함수인 경우에는 중단점의 바로 뒤에서 실행을 일시 중지합니다.

예제

dbstop in file if expression은 파일의 실행 가능한 첫 번째 라인에 조건부 중단점을 설정합니다. expression이 true((1))일 경우에만 실행을 일시 중지합니다.

예제

dbstop in file at location if expression은 지정된 위치에 조건부 중단점을 설정합니다. expression이 true일 경우에만 해당 위치에서 또는 해당 위치의 바로 앞에서 실행을 일시 중지합니다.

예제

dbstop if condition은 지정된 condition(예: error, naninf)을 충족하는 라인에서 실행을 일시 중지합니다. 다른 중단점과 달리, 이 중단점은 특정 파일의 특정 라인에 설정되지 않습니다. 즉, 지정된 condition이 발생할 경우 어떤 파일이나 어떤 라인에서든 MATLAB이 일시 중지됩니다.

예제

dbstop(b)는 이전에 b에 저장한 중단점을 복원합니다. 저장된 중단점이 포함된 파일은 검색 경로나 현재 폴더에 있어야 합니다. MATLAB은 라인 번호로 중단점을 지정하므로 파일의 라인은 중단점을 저장한 시점과 동일해야 합니다.

예제

모두 축소

중단점을 설정하고 프로그램의 첫 번째 실행 가능한 라인에서 실행을 일시 중지합니다.

다음 명령문이 포함된 파일 buggy.m을 만듭니다.

function z = buggy(x)
n = length(x);
z = (1:n)./x;

dbstop 명령을 실행하고 buggy를 실행합니다.

dbstop in buggy
buggy(1:5)

MATLAB은 일시 중지하고 디버그 모드가 되는 라인을 표시합니다.

2   n = length(x);
K>> 

디버그 모드를 종료하려면 dbquit를 입력하십시오.

로컬 함수의 첫 번째 실행 가능한 라인에 프로그램의 중단점을 설정합니다.

다음 명령문이 포함된 파일, myfile.m을 만듭니다.

function n = myfile(x)
n = myfunction(x);

function y = myfunction(x)
y = x + 1;

myfunction에 중단점을 설정합니다.

 dbstop in myfile>myfunction

루프를 일정 횟수 반복한 후 MATLAB이 일시 중지되도록 하는 중단점을 프로그램에 설정합니다.

다음 명령문이 포함된 파일, myprogram.m을 만듭니다.

x = ones(1,10);

for n = 1:10
x(n) = x(n) + 1;
end

n >= 4인 경우 일시 중지할 중단점을 설정하고 코드를 실행합니다.

dbstop in myprogram at 4 if n>=4
myprogram

루프를 3회 반복한 후 n = 4가 되면 MATLAB은 라인 4에서 일시 중지됩니다.

4   x(n) = x(n) + 1;
K>> 

디버그 모드를 종료하려면 dbquit를 입력하십시오.

중단점을 설정하고, 런타임 오류가 발생하면 실행을 일시 중지합니다.

다음 명령문이 포함된 파일 mybuggyprogram.m을 만듭니다.

x = ones(1,10);

for n = 1:10
x(n) = x(n+1) + 1;
end

오류 중단점을 설정하고 mybuggyprogram을 호출합니다.

dbstop if error
mybuggyprogram

런타임 오류가 발생하면 MATLAB은 디버그 모드를 시작하고 mybuggyprogram.m의 라인 4에서 일시 중지합니다.

Index exceeds matrix dimensions.
Error in mybuggyprogram (line 4)
x(n) = x(n+1) + 1; 
4   x(n) = x(n+1) + 1;

디버그 모드를 종료하려면 dbquit를 입력하십시오.

프로그램에서 생성된 오류 메시지 ID를 얻으려면 MException.last를 실행하십시오.

MException.last
ans = 

  MException with properties:

    identifier: 'MATLAB:badsubscript'
       message: 'Index exceeds matrix dimensions.'
         cause: {}
         stack: [1×1 struct]

오류 중단점을 지우고 캐치할 오류 메시지 ID를 지정하여 새 오류 중단점을 설정합니다. mybuggyprogram을 호출합니다.

dbclear if error
dbstop if error MATLAB:badsubscript
mybuggyprogram

동일한 런타임 오류가 발생하면 MATLAB은 디버그 모드가 되고 mybuggyprogram.m의 라인 4에서 일시 중지합니다.

Index exceeds matrix dimensions.
Error in mybuggyprogram (line 4)
x(n) = x(n+1) + 1; 
4   x(n) = x(n+1) + 1;

디버그 모드를 종료하려면 dbquit를 입력하십시오.

중단점을 설정하고, 코드가 NaN 값을 반환하면 실행을 일시 중지합니다.

입력 벡터가 필요한 파일 buggy.m을 만듭니다.

function z = buggy(x)
n = length(x);
z = (1:n)./x;

경고 중단점을 설정하고, 요소 중 하나가 0인 입력 벡터로 buggy를 호출합니다.

dbstop if naninf
buggy(0:2)

0으로 나누기(Division By Zero) 오류가 발생하면 MATLAB은 디버그 모드가 되고 buggy.m의 라인 3에서 일시 중지합니다.

NaN/Inf breakpoint hit for buggy on line 3.

디버그 모드를 종료하려면 dbquit를 입력하십시오.

저장된 중단점을 설정하고 저장하고 지운 다음 복원합니다.

다음 명령문을 포함하는 파일 buggy.m을 만듭니다.

function z = buggy(x)
n = length(x);
z = (1:n)./x;

buggy의 두 번째 라인에 오류 중단점과 함께 표준 중단점을 설정합니다.

dbstop at 2 in buggy
dbstop if error

dbstatus를 실행합니다. MATLAB이 설정된 중단점을 설명합니다.

dbstatus
Breakpoint for buggy is on line 2.
Stop if error.

중단점을 나타내는 구조체를 변수 b에 대입한 다음 b를 MAT 파일 buggybrkpnts에 저장합니다. b=dbstatus('-completenames')를 사용하여 절대 경로와 중단점 함수 중첩 시퀀스를 저장합니다.

b = dbstatus('-completenames');
save buggybrkpnts b

모든 중단점을 지웁니다.

dbclear all

MAT 파일을 불러오고 저장된 구조체 b와 함께 dbstop을 호출하여 중단점을 복원합니다.

load buggybrkpnts
dbstop(b)

입력 인수

모두 축소

파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 파일 이름은 MATLAB 검색 경로에 있는 파일의 부분 경로 이름 또는 임의의 파일의 절대 경로 이름을 포함할 수 있습니다. MATLAB의 유효한 파일 이름에 대한 자세한 내용은 파일 이름 지정하기 항목을 참조하십시오.

예: myfile.m

또한 file에 파일 마커(>)를 포함하여 특정 로컬 함수 또는 파일 내 중첩 함수에 대한 경로를 지정할 수 있습니다.

예: myfile>myfunction

file이 MATLAB 코드 파일이 아닌 경우(예: 내장 또는 MDL 파일인 경우) MATLAB은 경고를 발생시킵니다. MATLAB은 해당 파일 안에서 일시 중지할 수 없으므로 파일을 실행하기 전에 일시 중지합니다.

데이터형: char | string

file에 설정된 중단점 위치로, 다음 옵션 중 하나로 지정됩니다.

  • file의 라인 번호로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 디폴트 값은 1입니다.

  • file의 라인 번호로, 익명 함수 번호에 위치하며 문자형 벡터 또는 string형 스칼라로 지정됩니다. 예를 들어, 1@2는 두 번째 익명 함수에서의 라인 번호 1을 지정합니다. 디폴트 익명 함수 번호는 1입니다.

  • file의 로컬 함수 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

참고

중단점을 설정할 때 file에 파일 마커(>)가 포함된 경우에는 location을 지정할 수 없습니다. 예를 들어, 명령 dbstop in myfile>myfilefunction at 5는 유효하지 않습니다.

데이터형: char | string

스칼라 논리값 1 또는 0으로 계산되는 논리식으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

예: n >= 4

데이터형: char | string

일시 중지 조건으로, 다음 옵션 중 하나로 지정됩니다.

  • errortry/catch 블록 밖에서 런타임 오류가 발생하는 경우입니다. uncaught 런타임 오류 후에는 실행을 재개할 수 없습니다.

    특정 오류가 발생한 경우에만 실행을 일시 중지하려면 메시지 ID를 지정해야 합니다. 예를 들면 다음과 같습니다.

    • dbstop if errortry/catch 블록 밖에서 첫 번째 런타임 오류가 발생한 경우에 실행을 일시 중지합니다.

    • dbstop if error MATLAB:ls:InputsMustBeStringstry/catch 블록 밖에서 메시지 ID가 MATLAB:ls:InputsMustBeStrings인 첫 번째 런타임 오류가 발생한 경우에 실행을 일시 중지합니다.

  • caught errortry/catch 블록의 try 부분 내에서 런타임 오류가 발생하는 경우입니다. 특정 오류가 발생한 경우에만 실행을 일시 중지하려면 메시지 ID를 지정해야 합니다.

  • warning — 런타임 경고가 발생하는 경우입니다. 특정 경고가 발생한 경우에만 실행을 일시 중지하려면 메시지 ID를 지정해야 합니다.

    이 조건은 warning off all 명령으로 경고를 비활성화하거나 지정된 id에 대한 경고를 비활성화하지 않는 경우에는 아무런 영향을 미치지 않습니다. 경고를 사용하지 않는 방법에 대한 자세한 내용은 warning 항목을 참조하십시오.

  • naninf — 코드가 연산자, 함수 호출, 스칼라 대입 중 하나의 결과로 무한대 값(Inf) 또는 숫자가 아닌 값(NaN)을 반환하는 경우입니다.

b=dbstatus를 사용하여 이전에 구조체형 배열에 저장한 중단점 목록입니다.

  • 디버그를 시작하기 전에, 프로그램을 저장했는지와 프로그램과 프로그램에서 호출한 파일이 검색 경로나 현재 폴더에 있는지 확인하십시오.

  • 중단점이 실행을 일시 중지한 후 실행을 재개하려면 dbcont 또는 dbstep을 사용하십시오. 디버그 모드 종료를 위해서는 dbquit를 사용합니다. 파일에서 모든 중단점을 제거하려면 dbclear in filename을 사용하십시오. 모든 파일에서 중단점을 제거하려면 dbclear all을 사용하십시오. 자세한 내용은 dbclear를 참조하십시오.

  • 사용자 프로그램에서 모달(Modal) 대화 상자 또는 Figure를 표시하는 중인데, 중단점에서 일시 중지하면 MATLAB은 응답하지 않을 수 있습니다. 디버그 모드를 종료하고 MATLAB 프롬프트(>>)로 돌아가려면 Ctrl+C를 사용하십시오.

버전 내역

R2006a 이전에 개발됨