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

Youichi Iwakiri php-users@php.gr.jp
Fri, 11 Jan 2002 06:30:16 +0900


いわきりです

kuni wrote in <001c01c199fa$48189990$ddc38fd2@pm9bmg4yk43ajo>:
 >APDを試用してみましたが、Dynamic Script Tracer(以下DYN)とAPDの相違点は
 >下記のようなものになると思います。
 >
 >■スクリプトのデバッグを目的とする機能
 >(2) 実行ステップトレース機能
 >    APD: 関数呼び出しのトレースが取得できる。
 >     全ての関数(ZENDで提供する関数とスクリプト中で定義した
 >     ユーザ定義関数) の呼び出しが出力される。
 >     実行ステップのトレース機能はない(?)

たしかに、fcall_begin_handler, fcall_end_handlerしか使ってないので
実行ステップのトレース機能は無いですね。

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

statement_handlerを使ってトレースしているようですね。
実行ステップのトレースは欲しいです。
出来れば最終的な出力が

* <?php
* if (isset($id)) {
    echo $id;
  } else {
*    echo 'undefined $id';
  }
* ?> 

といった具合にソースと通過したステップとそうでない箇所を
特定できると嬉しいです。
以前作ろうとしたんですが断念しました :-<

<?php if (isset($id)) {echo $id;} else {echo 'undefined $id';} ?>

こんなコード書かれた場合の処理が面倒だったので 

#私の書いた長めのスクリプトには絶対に通過しないコードが含まれている
#自信があります。無駄なコードは省きたいですよね。

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

<?php if (isset($id)) {echo $id;} else {echo 'undefined $id';} ?>

なコードだとやっぱり1ステップ扱いでしょうか?

興味があって試用したいと思いましたが、
OS指定でバイナリ配布ですか。

私の環境はFreeBSD 3.4-RELEASEなのでそれようのバイナリも置いて
欲しいです。
#どっちかというとAPDにマージして貰ったほうがうれしい :-)