PHP 매뉴얼
이전 | E. 부록. PHP 디버깅하기 | 다음

# 디버거 프로토콜

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`

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

  표 E-1. 디버거 줄 타입

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

`data`

  Line data.

표 E-2. 디버거 에러 타입

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)

예 E-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

이전 | 처음으로 | 다음
디버거 사용하기 | 위로 | PHP 3 확장