다음: 벌레잡이터, 이전: 벌레잡이터 나가기, 상위 문서: 벌레잡기   [차례][찾아보기]


13.3 중단점

중단점은 dbstop 함수로 모든 m 기록철에 설정할 수 있습니다.

dbstop 함수
dbstop 함수
dbstop 함수 줄1 줄2
dbstop 줄1
dbstop in 함수
dbstop in 함수 at
dbstop in 함수 at if "조건식"
dbstop if 사건
dbstop if 사건 식별자
dbstop (bp_struct)
실_줄 = dbstop

내장 벌레잡이용 중단점을 설정합니다.

함수는 현재 경로에 있는 함수 이름입니다. 이미 벌레잡이터 안에 있으면 함수 매개변수를 생략해도 현재 함수를 쓸 수 있습니다. 중단점을 매인 함수에 넣으려면 범위 연산자 ‘>’으로 설정합니다. 예를 들어, file.m에 매인 함수 func2이 있으면, func2에 있는 중단점은 file>func2으로 명시합니다.

은 실행을 중단할 줄 번호입니다. 을 지정하지 않으면, 기록철 func.m의 첫 번째 실행 줄을 기본으로 사용합니다. 한 명령 안에 여러 줄을 지정할 수 있습니다. 함수 구문을 사용하여 단일 벡터 매개변수([줄1, 줄2, …])로 여러 줄을 전달할 수도 있습니다.

조건식은 옥타브 표현식으로써 부호 맥락상 중단점이 작동하여야 하는지 평가합니다. 중단점을 만나면, 조건식을 평가하여 조건식이 참이면 중단점이 작동합니다. 정의되지 않은 변수를 참조하는 등 조건식을 평가할 수 없으면, 오류가 납니다. 부작용이 있는 표현식(y++ > 1 등)은 변수를 바꾸며, 보통 사용을 꺼려야 합니다. 따옴표(‘"’, ‘'’)나 주석 문자(‘#’, ‘%’)가 있는 조건식은 반드시 따옴표로 묶어야 합니다.(이 사항은 편집기의 문맥 차림표에 적용되지 않습니다.) 예를 들어,

dbstop in axis at 246 if 'any (opt == "x")'

사건을 특정하는 형식은 주어진 함수와 줄 번호에 있는 특정 중단점을 만들지 않습니다. 명백한 예외 사건이 발생했을 때 벌레잡이터로 들어가게 합니다. 가능한 값은 다음과 같습니다.

error

오류가 발생하면 멈춥니다. debug_on_error (true)debug_on_interrupt (true) 두 개를 모두 지정하는 것과 같습니다.

caught error

오류를 시행문 구역에서 잡았을 때 멈춥니다.(아직 구현하지 않음)

interrupt

중단 신호(Ctrl-C)가 오면 멈춥니다.

naninf

부호가 비정형 값을 반환하면 멈춥니다.(아직 구현하지 않음)

warning

경고가 발생하면 멈춥니다. debug_on_warning (true)를 지정하는 것과 같습니다.

사건 error, caught error, warning은 모두 뒤에 오류 식별자 또는 경고 식별자인 문자열이 따라올 수 있습니다. 식별자가 덧붙으면 식별자로 지정한 오류와 경고에서만 멈춥니다. 여러 식별자에서 멈추려면,  dbstop 명령을 여러 번 내려야 합니다.

중단점과 사건을 같은 구문을 사용한 dbclear 명령으로 지울 수 있습니다.

bp_state = dbstatus; …; dbstop (bp_state) 명령을 실행하여 모든 중단점을 저장하여 두었다가 한 번에 모두 복구하는 것이 가능합니다.

선택 출력 실_줄은 중단점을 설정한 실제 줄 번호입니다. 지정한 줄이 실행 불가능한 경우, 지정한 줄과 다를 수 있습니다. 예를 들어, 중단점을 빈 줄에 설정하면, 실제 중단점은 빈 줄 바로 뒤에 있는 실행 가능한 줄에 설정됩니다.

외부 그림 사용자 사이틀에서 편집하는 등 기록철을 다시 구문 분석하게 되면, 기록철 안에 있는 모든 중단점은 지워집니다.

같이 보기: dbclear, dbstatus, dbstep, debug_on_error, debug_on_warning, debug_on_interrupt.

분류 원소 함수에 있는 중단점도 지원합니다.(예: dbstop ("@class/method")) 그러나 내장 함수(예: sin 등)와 동적 적재 함수(예: oct)에는 중단점을 설정하지 못합니다.

함수 어귀에 중단점을 설정하려면 1번 줄에 중단점을 설정하던가, 줄 번호를 모두 빼고 함수 이름으로만 중단점을 설정합니다. 중단점을 설정하면, 서두에 있는 주석 구역을 무시하고 함수의 첫 번째 실행 가능한 표현식에 중단점을 설정합니다. 예시:

dbstop ("asind", 1)
⇒ 29

반환값 29가 중단점이 사실상 29번 줄에 설정됨을 의미함에 주의하십시오. 함수에 있는 중단점의 상태는 dbstatus으로 조회합니다.

dbstatus
dbstatus 함수
중단점_목록 = dbstatus

작동하는 중단점 위치를 보고합니다.

입출력 매개변수 없이 호출하면, 중단점이 있는 모든 함수와 그 함수에서 중단점이 설정된 줄 번호를 출력합니다.

함수 이름 함수를 지정하면, 지정한 함수와 그 매인 함수에 있는 중단점만 보고합니다.

선택 반환 매개변수 중단점_목록은 아래 기록란이 있는 구조체 배열입니다.

name

중단점이 있는 함수 이름입니다. file.m이라는 m 기록철에 func2이라는 매인 함수가 있다고 하면, 이 매인 함수는 file>func2으로 표시합니다.

file

함수 부호가 자리한 m 기록철의 이름입니다.

line

중단점이 있는 줄 번호입니다.

cond

중단점을 작동시키려면 반드시 만족시켜야 하는 조건이며, 조건이 없는 중단점에는 빈 문자열로 나옵니다.

Idbstop if error가 참이기는 하나 식별자를 명시하지 않은 경우, 반환값에는 "errs"라는 빈 기록란이 들어갑니다. 식별자를 지정하면, errs 기록란에는 한 열 당 식별자가 하나씩 들어갑니다. dbstop if error가 거짓이면,  "errs" 기록란이 없습니다. "warn" 기록란도 dbstop if warning와 비슷합니다.

같이 보기: dbstop, dbclear, dbwhere, dblist, dbstack.

앞선 예시를 다시 사용해 보면, dbstatus ("asind")는 29를 반환합니다. 그리고 나서 dbclear 함수로 나열한 중단점을 지울 수 있습니다.

dbclear 함수
dbclear 함수
dbclear 함수 줄1 줄2
dbclear
dbclear all
dbclear in 함수
dbclear in 함수 at
dbclear if 사건
dbclear ("함수")
dbclear ("함수", )
dbclear ("함수", 줄1, 줄2, …)
dbclear ("함수", 줄1, …)
dbclear (, …)
dbclear ("all")

함수 함수의 줄 번호 에 있는 중단점을 지웁니다.

매개변수는 다음과 같습니다.

함수

문자열 변수인 함수 이름입니다. 이미 벌레잡이터 안에 있으면 이 매개변수를 생략해도 현재 함수를 쓸 수 있습니다.

지울 중단점이 있는 줄 번호입니다. 여러 줄을 지정하려면 매개변수를 분리하던가 벡터로 주어야 합니다.

사건

error, interrupt, warning과 같은 사건입니다.(자세한 내용은 dbstop을 참고)

줄 번호를 지정하지 않으면, 지정한 함수에 있는 모든 중단점을 지웁니다.

지정한 줄에 중단점이 없으면 아무 일도 일어나지 않습니다.

특수 예약어 "all"은 모든 기록철의 모든 중단점을 지웁니다.

같이 보기: dbstop, dbstatus, dbwhere.

중단점을 매인 함수에 설정할 수도 있습니다. 예를 들어, 기록철에 아래와 같은 함수가 있으면

function y = func1 (x)
  y = func2 (x);
endfunction
function y = func2 (x)
  y = x + 1;
endfunction

아래 명령으로 매인 함수의 시작 부분에 중단점을 직접 설정할 수 있습니다.

dbstop func1>func2
⇒ 5

>’이 매인 함수와 매인함수가 담긴 기록철을 구별하는 문자임에 유의하십시오.

옥타브 대본에 중단점을 설정하는 또다른 쉬운 방법은 keyboard 함수를 사용하는 것입니다.

keyboard ()
keyboard ("길잡이")

m 기록철 실행을 멈추고, 벌레잡이터로 들어갑니다.

keyboard 함수를 실행하면, 옥타브가 길잡이를 출력하고 사용자 입력을 기다립니다. 입력한 내용은 문자열로써 평가되고 결과가 나옵니다. 이로서 함수 안에 있는 변수 값을 분석하고, 필요하면 새 값을 할당할 수 있습니다. 길잡이를 떠나 일반적인 입력 실행으로 돌아가려면 ‘return’ 또는 ‘dbcont’을 타자합니다. keyboard 함수는 종료 상태를 반환하지 않습니다.

keyboard 를 매개변수 없이 실행하면, 기본 길잡이 ‘debug> ’를 사용합니다.

같이 보기: dbstop, dbcont, dbquit.

대본에서 사용자가 실행을 멈추기를 바라는 자리에 keyboard 함수를 씁니다. 대본 실행 중에 자동으로 벌레잡이터로 들어갑니다.


다음: 벌레잡이터, 이전: 벌레잡이터 나가기, 상위 문서: 벌레잡기   [차례][찾아보기]