ホームページ >バックエンド開発 >PHPチュートリアル >phpのインストールと使い方を詳しく解説 Xdebug_PHPチュートリアル

phpのインストールと使い方を詳しく解説 Xdebug_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:05:421004ブラウズ

デバッガーが必要な理由は何ですか?
多くの PHP プログラマーはデバッグに echo、print_r()、var_dump()、printf() などを使用します。実際、豊富な開発経験を持つプログラマーはこれらで十分です。この処理では、特定の変数の値を出力することで、プログラムが正しく実行されたかどうかを判断でき、効率性もわかります(もちろん、いくつかの時間関数を使用する必要がある場合もあります)。では、なぜプログラムの動作を監視するために特別なデバッガが必要なのでしょうか? この質問に対する答えは、後で明らかになるまで残しておいてもよいでしょう。
Xdebug とは何ですか?
Xdebug は、PHP プログラムの実行ステータスを追跡、デバッグ、分析するために使用できるオープンソースの PHP プログラム デバッガー (つまり、デバッグ ツール) です。
Xdebug をインストールするには? :
1. http://www.xdebug.org/download.php を開いて、対応するバージョンをダウンロードします
Win: Windows バイナリ バージョン
Linux: ソース
dll ファイルを取得する (win) か、インストール ファイルを実行します (linux)
2。
Win のインストール: ダウンロードした dll ファイルを対応するディレクトリに配置します。たとえば、私のものは D の下に配置されています: phpize を使用すると、PHP が拡張モジュールをサポートできるようになります) phpize をインストールします: sudo apt-get install php5-dev
インストールされている場合は、次のコマンドを続行します
./configure
make
make install


このインターフェースがあります


cp modules/xdebug.so /usr/lib/php5/20090626+lfs xdebug.so ファイルを php5
3 の下に移動します。 php.ini を編集し、次の行を追加します:

[Xdebug]
zend_extension=D:xamppphpextphp_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" は、データ出力を配置する場所です。 by Xdebug ファイルのディレクトリは自由に設定できます。

4. Apache を再起動します


5. の内容を含む test.php を記述します。出力内容に xdebug が表示されれば、インストールと構成は成功しています。

以下に示すように:
それでは、最も簡単なプログラムのデバッグから始めて、

Xdebug

を段階的に紹介しましょう。

デバッグ:
まず、存在しないファイルをインクルードしようとするなど、実行エラーを引き起こす可能性のあるプログラムを作成します。
testXdebug.php

require_once('abc.php');?>
その後、ブラウザからアクセスすると、エラー メッセージが色付きになっていることに驚きました:


ただし、スタイルの変更を除けば、通常出力されるエラー メッセージの内容と何ら変わりはなく、あまり重要ではありません。さて、プログラムの書き換えを続けましょう:

testXdebug2.php

testXdebug();function testXdebug() {
testXdebug2.php
出力情報:


何を見つけましたか?
Xdebug
はコードの実行をトレースし、欠陥のある関数
testXdebug() を見つけます。 codeコードをより複雑にしましょう:

testxdebug3.php

copyコードは次のとおりです。 requireFile (); }function requireFile() {
require_once('abc.php');
}?>

出力情報:

つまり、 この機能を使用すると、コードの関係を明確にし、迅速に特定し、迅速にトラブルシューティングを行うことができます。 事実、php関数debug_backtrace()も同様の関数を持っていますが、

debug_backtrace()関数はphp4.3.0およびphp5の後のバージョンでのみ有効になっていることに注意してください。 。この関数は、PHP開発チームがPHP5で追加し、その後PHP4.3にバックポートされた新機能です。 Xdebug を使用してスクリプトの実行時間をテストする方法 特定のスクリプトの実行時間をテストするには、通常、microtime()

関数を使用して現在時刻を決定する必要があります。たとえば、

PHP マニュアルの例:
コードをコピーします コードは次のとおりです: /**

* PHP 5 の動作を再現するシンプルな関数*/function microtime_float(){ List($usec, $ sec) =explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
// スリープしばらくの間
usleep(100 );
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "$time 秒間何もしませんでしたn";
?>


しかし、microtime()によって返される値はマイクロ秒数と絶対タイムスタンプ(「0.03520000 1153122275」など)であり、読み取ることができません。したがって、上記のプログラムでは、この 2 つを追加する別の関数 microtime_float() を作成する必要があります。
Xdebugには時間を表示する関数xdebug_time_index()が付属しています。
スクリプトが占有するメモリを測定するにはどうすればよいですか?

プログラムが特定の実行段階に達したときにプログラムが占有するメモリの量を知りたい場合があります。このために、PHP は関数 memory_get_usage() を提供します。この関数は、PHP-enable-memory-limit パラメーターを使用してコンパイルされた場合にのみ有効です。

Xdebug
は、そのような関数を実装するための関数 xdebug_memory_usage() も提供します。さらに、xdebug は、ピークメモリ使用量を表示するための xdebug_peak_memory_usage() 関数も提供します。

コードの欠陥を検出するにはどうすればよいですか?

場合によっては、コードに明らかな書き込みエラーがなく、エラー メッセージ (errorwarningnotice など) が表示されない場合がありますが、これはコードが正しいという意味ではありません。場合によっては、特定のコードの実行に時間がかかりすぎてメモリを大量に占有し、システム全体の効率に影響を与えることがあります。コードのどの部分に問題があるのか​​を直接確認する方法はありません。現時点では、コードの各段階の動作を監視し、それをログ ファイルに書き込み、一定期間実行した後に分析して問題を見つけたいと考えています。
php.iniファイル
を編集して
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="I:Projectsxdebug"を追加する前を思い出してください。
xdebug.profile r_output_dir =" I:プロジェクトxデバッグ"

これらの行の目的は、実行分析ファイルを「../Projects/xdebug」ディレクトリに書き込むことです (設定したい任意のディレクトリに置き換えることができます)。特定のプログラムを実行して、対応するディレクトリを開くと、cachegrind.out.1169585776この形式で名前が付けられたファイルなどのファイルが大量に生成されていることがわかります。これらは、Xdebugによって生成された分析ファイルです。エディタで開くと、プログラムの実行に関する多くの詳細情報が表示されます

最後に:

Xdebug

は、さまざまな組み込み関数を提供し、一部の既存の PHP 関数を上書きします。これは、デバッグやトラブルシューティングに便利に使用できます。Xdebug は、プログラムの実行とログ ファイルを追跡することもできます。分析を通じて、プログラム動作のボトルネックを解消し、プログラムの効率を向上させ、システム全体のパフォーマンスを向上させます。

http://www.bkjia.com/PHPjc/327680.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327680.html技術記事なぜデバッガーが必要なのでしょうか? 多くの PHP プログラマーは、デバッグに echo、print_r()、var_dump()、printf() などを使用します。実際、豊富な開発経験を持つプログラマーにとっては、これらで十分です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。