[PHP-users 4649] Re: PHP スクリプトのデバッグ用 PHP-Extension を公開しました。

kuni php-users@php.gr.jp
Fri, 11 Jan 2002 02:14:35 +0900


> > PHP スクリプトのデバッグ用 PHP-Extensionを公開しました。
> > 名称: 「PHP Dynamic Script Tracer」
> > 概要:
> >   ・PHPスクリプトのデバッグを手助けする為のPHP Extensionです。
> >   ・PHPスクリプトに修正を加えずに、スクリプトの実行トレースを取得するこ
とが
> > できます。
> >   ・HTTPリクエストパラメータを表示することができます。
> >   ・関数呼び出し時の引数値、関数からのリターン値を表示することができま
す。
> >   ・各実行ステップの処理経過時間をマイクロ秒単位で表示します。

> APDに非常に良く似ているように思えます。APDとどこか違いがあるのでしょうか?
>
> http://apd.communityconnect.com/faq.html

APDを試用してみましたが、Dynamic Script Tracer(以下DYN)とAPDの相違点は
下記のようなものになると思います。

■スクリプトのデバッグを目的とする機能
(1) 関数の引数、関数値の表示

    APD: 関数呼び出し時、直接リテラル値を引数とした場合だけ引数値が
     表示される。リターン値の表示機能が無い。
     ※ スクリプトに修正を加え、デバッグ関数を挿入することにより、
      変数内容をダンプすることは可能。

    DYN: 全ての場合で引数値が表示される。構造化されたデータも表示する。
     リターン値の表示の表示がされる。但し、リターン値の変数への代入を
     行った場合だけ。

(2) 実行ステップトレース機能
    APD: 関数呼び出しのトレースが取得できる。
     全ての関数(ZENDで提供する関数とスクリプト中で定義した
     ユーザ定義関数) の呼び出しが出力される。
     実行ステップのトレース機能はない(?)

  DYN: スクリプト中で定義したユーザ定義関数のトレースと実行ステップの
     トレースが取得できる。リターンの個所も正確に知ることができる。

■プロファイリング機能
(1) 実行時間測定

  APD: 全ての関数に関して処理時間が取得できる。

  DYN: ユーザ定義関数と各ステートメントに関して処理時間が取得できる。
     ループのあるロジックについて処理時間を計算するための情報を
     提供する。

(2) 使用メモリ量測定
  APD: 測定できる。(?)

  DYN: 測定できない。

■その他のデバッグテクニックの提供
(1) スタックダンプ
  APD: 有る。

  DYN: 無い。

(2) 関数シンボルテーブルの変更(トラップを行うための機能)
  APD: 有る。

  DYN: 無い。
--------------------------------------------------------
私の感想ですが、
・APDは使用メモリの測定と関数トラップ機能に魅力を感じます。
・DYNは、関数間のパラメータの受け渡しを表示すること、
 全ての実行ステップを知るできることから、 基本的なデバッグを行う
 場合に有効ではないかと思います。

--------------------------------------------------------
kuni@pm9.com
野田邦昌