Forum und email

디버거 프로토콜

PHP 3 디버거 프로토콜은 줄-단위다. 각 줄은 각각 type을 갖고, 몇개의 줄이 message를 구성한다. 각 메시지는 start 타입의 줄로 시작되고 end 타입의 줄로 종료된다. PHP 3는 동시에 서로 다른 메시지 줄을 보낼수 있다.

각 줄은 다음과 같은 포맷을 갖을수 있다:

date time host(pid) type: message-data

date
ISO 8601 포맷의 날짜 (yyyy-mm-dd)
time
마이크로초를 포함하는 시간: hh:mm:uuuuuu
host
스크립트 에러가 발생하는 호스트의 DNS 이름이나 IP 주소
pid
이 에러를 발생하는 PHP 3 스크립트의 프로세스의 host상의 PID (프로세스 ID)
type

줄 타입. 수신 프로그램에게 다음 데이터를 취급해야 한다는것을 알려줌:

디버거 줄 타입
Name Meaning
start 수신 프로그램에게 디버거 메시지가 여기서 시작됨을 알림. data의 내용이 아래 목록처럼 에러 메시지의 타입이 될것이다.
message PHP 3 에러 메시지.
location 에러가 발생한 파일명과 줄번호. 첫번째 location 줄은 항상 상단의 위치를 내포할것이다. datafile:line을 포함한다. message와 모든 function 이후에 항상 location 줄이 될것이다.
frames 다음 스택 덤프 안의 프레임 번호. 4개의 프레임이 존재한다면, 호출되는 함수의 네단계의 정보를 기대할수 있다. "frames"줄이 보이지 않으면, 스택의 깊이는 0이라고 볼수 있다 (상단에서 에러가 발생함).
function 에러가 발생하는 함수명. 함수 호출 스택안의 모든 레벨에서 한번씩 반복될것이다.
end 수신 프로그램에게 디버거 메시지가 여기서 끝난다고 알림.

data
Line data.
디버거 에러 타입
Debugger PHP 3 Internal
warning E_WARNING
error E_ERROR
parse E_PARSE
notice E_NOTICE
core-error E_CORE_ERROR
core-warning E_CORE_WARNING
unknown (any other)

Example#1 예제 디버거 메시지

1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice
1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (null):7
1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1
1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: /home/ssb/public_html/test.php3:10
1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: notice