php Xdebugのインストールと使用の詳細

4718 ワード

なぜデブガーが必要なの?
多くのPHPプログラマーはecho、print_を使用してデバッグします.r()、var_dump()やprintf()など、実は開発経験が豊富なプログラマーにとっても十分で、プログラム実行中に特定の変数の値を出力することでプログラム実行が正しいかどうかを判断することができます.効率の高低もわかります(もちろん時間関数も必要かもしれません).では、なぜプログラムの実行を監視するために専門のデバッガが必要なのでしょうか.この問題の答えは後に残しておいてください.
Xdebugとは?
XdebugはオープンソースのPHPプログラムデバッガ(つまりDebugツール)であり、PHPプログラムの実行状況を追跡、デバッグ、分析するために使用できます.
Xdebugのインストール方法:
1.開くhttp://www.xdebug.org/download.php対応するバージョンのダウンロード
Win:Windows binariesバージョン
  Linux:source
dllファイル(win)を取得するか、インストールファイル(linux)を実行します.
2.インストール
Win:ダウンロードしたdllファイルを対応するディレクトリに配置します.例えば私のはD:xamppphpextの下に置きます.
Linux:インストールファイルの実行
tar -xvzf xdebug-2.1.2.tgz
cd  xdebug-2.1.2
phpize(phpizeにこのcommandがない場合は、phpizeを1回インストールする必要があります.phpizeはphpに拡張モジュールをサポートさせることができます)phpize:sudo apt-get install php 5-devをインストールします.
インストールされている場合は、次のコマンドを続行します.
./configure make make install
このインタフェースがあります
cp modules/xdebug.so/usr/lib/php 5/20090626+lfsはxdebug.soファイルをphp 5の下に移動
3.phpを編集する.ini、次の行を追加します:[Xdebug]
zend_extension=D:\xampp\php\ext\php_xdebug.dll   (Win)
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so(Linux)
xdebug.profiler_enable=on
xdebug.trace_output_dir="../Projects/xdebug"
xdebug.profiler_output_dir="../Projects/xdebug"
後のディレクトリ「./Projects/xdebug」は、Xdebug出力のデータファイルを配置したいディレクトリで、自由に設定できます.
4.Apacheを再起動する.
5.testを書く.phpは、出力されたコンテンツにxdebugが表示された場合、インストール構成に成功したことを示します.
次の図を示します.
ここでは、最も簡単なプログラムデバッグからXdebugについて説明します.デバッグ:まず、存在しないファイルを含めるなど、実行エラーを引き起こすプログラムを書きます.testXdebug.phprequire_once(‘abc.php'); ?>ブラウザからアクセスすると、エラーメッセージがカラーになったことに驚きました.
しかし、スタイルの変更を除いて、私たちが普段印刷しているエラーメッセージの内容とは何の違いもなく、意味がありません.では、プログラムの書き換えを続けます.testXdebug 2.php testXdebug();function testXdebug() {        require_once('abc.php'); } ?>出力情報:
何を見つけた?Xdebugはコードの実行を追跡し、エラーの関数testXdebug()を見つけた.コードをもっと複雑に書きます.testXdebug 3.php
 
   
testXdebug();
function testXdebug() {
       requireFile();    
}
function requireFile() {
       require_once('abc.php');
}
?>

出力情報:
つまりXdebugはJavaのExceptionのような「トレースバック」の機能を持ち、プログラムの実行に応じてエラーの具体的な位置までトレースすることができ、プログラムの呼び出しが複雑であっても、この機能を通じてコード関係を整理し、迅速に位置決めし、迅速にエラーを排出することができます.
実はPHP関数debug_backtrace()にも似たような機能がありますが、debug_に注意してください.backtrace()関数はPHP 4のみである.3.0以降のバージョンおよびPHP 5で有効になります.この関数はPHP開発チームがPHP 5に新たに追加した関数で、PHP 4に逆移植する.3にあります.
Xdebugテストスクリプトの実行時間を使用して、スクリプトの実行時間をテストする方法は、通常microtime()関数を使用して現在の時間を決定する必要があります.例えばPHPマニュアルの例:
 
   
/**
* Simple function to replicate PHP 5 behaviour
*/
function microtime_float()
{
      list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
// Sleep for a while
usleep(100);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Did nothing in $time seconds
";
?>

でも
microtime()
返される値は、マイクロ秒数および絶対タイムスタンプです(たとえば「
0.03520000 1153122275
」など)を参照してください.このようなプログラムでは、別の関数を書く必要があります.
microtime_float()
を選択します.
Xdebug
関数を1つ持参しました
xdebug_time_index()
に表示されます.
スクリプトに使用されるメモリの測定方法
プログラムが特定のフェーズに実行されるときにどれだけのメモリが消費されるかを知りたい場合があります.
,
そのために
PHP
関数の提供
memory_get_usage()
.この関数は
PHP
コンパイル時に使用した
-enable-memory-limit
パラメータの場合のみ有効です. 
Xdebug
同様に関数を提供します
xdebug_memory_usage()
このような機能を実現し、また
xdebug
もう一つ提供されています
xdebug_peak_memory_usage()
の双曲線コサインを返します.
コードの不足を検出するにはどうすればいいですか?
コードに明らかな記述エラーがない場合があります.エラーメッセージは表示されませんでした(error、warning、noticeなど)ですが、これはコードが正しいことを示すものではありません.あるコードの実行時間が長すぎて、メモリが多すぎてシステム全体の効率に影響を与える可能性があります.どのコードに問題があるのかを直接見ることはできません.このとき、コードの各段階の実行状況を監視し、ログに書きたいと思っています.ファイルに行き、しばらく実行してから分析し、問題点を見つけます.思い出す前にphpを編集しましたiniファイルに[Xdebug]xdebugを加える.profiler_enable=on xdebug.trace_output_dir="I:\Projects\xdebug"xdebug.profiler_output_dir="I:\Projects\xdebug"
これらの行は、実行状況の分析ファイルを「.../Projects/xdebugディレクトリから(設定したいディレクトリに置き換えることができます).プログラムを実行した後、対応するディレクトリを開くと、cachegrind.out.1695855776のようなフォーマットで命名されたファイルがたくさん生成されていることがわかります.これがXdebugが生成した分析ファイルです.エディタで開くと、多くのプログラムの実行に関する詳細情報が表示されます.
最後:
Xdebugは各種の持参した関数を提供し、既存のいくつかのPHP関数を上書きし、デバッグの誤りに便利に使用することができる.Xdebugはプログラムの実行を追跡することもでき、ログファイルの分析を通じて、プログラムの実行のボトルネックを迅速に見つけることができ、プログラムの効率を高め、システム全体の性能を高めることができます.
原文住所:http://www.jb51.net/article/38780.htm