検索
ホームページバックエンド開発PHPチュートリアルXdebugの使い方を詳しく解説 PHP debugger_PHPチュートリアル

Xdebugの使い方を詳しく解説 PHP debugger_PHPチュートリアル

Jul 13, 2016 pm 05:42 PM
phpxdebugのために使用できるそしてあなた情報処理システムマネジメント詳しい説明デバッガ

PHP を使用してシステム管理や従来のデータ処理などのタスク用のコマンドライン スクリプトを作成できますが、プログラミング言語は Web アプリケーションのパフォーマンスに大きな影響を与えます。使用中、各 PHP アプリケーションはサーバー上に常駐し、受信リクエストを処理するためにプロキシ (Apache など) 経由で PHP アプリケーションが呼び出されます。一般的な PHP Web アプリケーションは、リクエストごとに、短い実行後に Web ページまたは XML データ構造を取得します。

クライアント、ネットワーク、HTTP サーバー、アプリケーション コード、基盤となるデータベースを含むレイヤーで構築された Web アプリケーションは、単純な実行を想定した場合、PHP コード内のエラーを分離するのが困難になります。 PHP コードを除くすべてのレイヤーが適切に機能していると仮定しても、特にアプリケーションが多数のクラスを使用している場合、PHP コードのバグを追跡することは非常に困難になる可能性があります。

PHP ステートメント echo と関数 var_dump()、debug_zval_dump()、print_r() は、さまざまな問題の解決に役立つ、一般的で人気のあるデバッグ支援ツールです。ただし、これらのステートメント、および PEAR Log パッケージなどのさらに強力なツールは、証拠を生成するために、まずコンテキストの外で推測的に分析する必要があるフォレンジック ツールです。

推論によるデバッグは、ある意味、無謀なアプローチです。データを収集して精査し、何が問題だったのかを推測します。重要な情報が欠落している場合は、コードを再テストし、手順を繰り返し、調査を再度開始する必要があります。より効率的なアプローチは、アプリケーションの実行中にプローブすることです。リクエスト パラメーターを並べ替えたり、プロシージャ コール スタックをフィルターしたり、必要な変数やオブジェクトをクエリしたりできます。アプリケーションを一時的に中断し、変数の値が変更されたときにアラートを受け取ることができます。場合によっては、「もしも?」という質問を対話的に行うことで、実際に変数に影響を与えることができます。

デバッガーと呼ばれる特別なアプリケーションは、この「リアルタイム」または対話型検査をサポートします。プロセスを制御し、そのメモリを監視するために、デバッガを起動してプロセスに接続することができます。あるいは、インタープリター型言語の場合、デバッガーはコードを直接解釈できます。典型的な最新のグラフィカル デバッガは、コードのインデックス付けと参照を行い、複雑なデータ構造を人間が判読できる形式で簡単に表示し、同時にコール スタック、中間出力、すべての変数の値などのプログラムの状態を表示できます。たとえば、デバッガは通常、クラスのプロパティとメソッドを分類して説明します。

今回と次回の記事では、PHPのデバッグを確実に簡略化してくれるツールを紹介していきます。次回は、インタラクティブなデバッグと、PHP 専用の堅牢なデバッガである Zend デバッガに焦点を当て、それが提供する多くの機能を探っていきます。 (Zend Debugger は商用製品であり、Zend PHP 統合開発環境 (IDE) の一部です)。コードではなくビールにお金を費やさないように、オープンソースの PHP デバッガも紹介します。ただし、この記事では、証拠をより効果的に収集する方法に焦点を当てます。

CSIに似ていますが、より煩わしいだけです

コードが間違っている場合、望ましい結果が得られない場合、または完全にクラッシュした場合は、「どこで、何を、なぜ、いつ」という 4 つの質問に答える必要があります。

「どこ」はアプリケーションが最後に正常に実行されたファイルと行番号です。

「何」は間違いのコードです - 例えば、容疑者。

「なぜ」が間違いの本質である。おそらく、論理エラーおよび/またはオペレーティング システムとの相互作用によって引き起こされるエラー、またはその両方である可能性があります。

そして「when」はエラーが発生したときのコンテキストです。プログラムが終了する前に何が起こったのでしょうか? すべての犯罪と同様、十分な手がかりを集めることができれば、犯人を見つけるのに役立ちます。

フォレンジックツール Xdebug (前回の記事で PHP アプリケーションのパフォーマンスを分析するために使用したツール) は、名前が示すように、プログラムのステータスを示すいくつかの関数を提供し、コマンド システムに追加する必要がある値です。研究ツール (「参考文献」を参照)。 Xdebug をインストールすると、(表面上は) 無限再帰を防止し、スタック トレースと関数トレースに関するエラー メッセージを修正し、メモリ割り当てを監視するなどの機能が実行されます。 Xdebug には、実行時エラー診断のためにコードに追加できる一連の関数も含まれています。

たとえば、次のコードは、いくつかの xdebug_...() ステップを使用して callee() 関数をテストし、ファイル名、行番号、呼び出し関数の名前など、呼び出しプログラムの正確な場所を出力します。

リスト 1. callee() 関数をテストする手順

関数呼び出し先( $a ) {

echo sprintf("callee() が @ %s に呼び出されました: %s から %s",

xdebug_call_file(),

xdebug_call_line(),

xdebug_call_function()

);

}

$result = callee( "arg" );

?>

このコードは以下を生成します:

callee() が @ /var/www/catalog/xd.php を呼び出しました: 10 from {main}

上に戻る Xdebug のビルドとインストール

Xdebug は、Mac OS X を含む UNIX® 系オペレーティング システムのソース コードから簡単に構築できます。 Microsoft® Windows® で PHP を使用している場合は、バイナリ Xdebug モジュールの最新の PHP バージョンを Xdebug Web サイトからダウンロードできます (「参考文献」を参照)。

Debian “Sarge” Linux® と PHP V4.3.10-19 用の Xdebug をビルドしてインストールしましょう。この記事の執筆時点で、Xdebug の最新バージョンは V2.0.0RC4 で、2007 年 5 月 17 日にリリースされました。この記事を続けるには、phpize ユーティリティと php-config ユーティリティが必要で、システムの php.ini 構成ファイルを編集できる必要があります (ユーティリティがない場合は、PHP.net にアクセスしてソース コードと手順を参照してください) PHP をゼロから構築する方法について)。次の手順に従ってください:

Xdebug tarball (gzip 圧縮された .tar アーカイブ) をダウンロードします。 wget コマンドを使用すると、これを簡単に行うことができます。 $ wget http://www.xdebug.org/files/xdebug-2.0.0RC4.tgz

tarball を解凍し、ソース コード ディレクトリに切り替えます: $ tar xzf xdebug-2.0.0RC4.tgz

$ cd xdebug-2.0.0RC4

phpize を実行して、お使いの PHP バージョン用の Xdebug コードを準備します: $ phpize

設定:

PHP API バージョン: 20020918

ZendモジュールAPI番号:20020429

Zend Extension API No: 20021010

phpize の出力は、ビルド プロセスの残りの部分を微調整するために使用されるスクリプト (通常は configure という名前) です。

設定スクリプトを実行します: $ ./configure

ビルドシステムのタイプを確認中... i686-pc-linux-gnu

ホストシステムのタイプを確認中... i686-pc-linux-gnu

gcc をチェック中... gcc

C コンパイラのデフォルトの出力ファイル名を確認しています... a.out

Cコンパイラが動作するか確認中…はい

クロスコンパイルしているかどうかを確認しています...いいえ

実行可能ファイルのサフィックスをチェックしています...

オブジェクトファイルのサフィックスをチェック中...o

ライブラリのストリッピングが可能かどうかを確認中...はい

設定タグ「F77」をlibtoolに追加します

設定: ./config.status の作成

config.status: config.h を作成しています

make を実行して Xdebug 拡張機能をビルドします: $ make

/bin/sh /home/strike/tmp/xdebug-2.0.0RC4/libtool

--mode=compile gcc -I.

-I/home/strike/tmp/xdebug-2.0.0RC4 -DPHP_ATOM_INC

-I/home/strike/tmp/xdebug-2.0.0RC4/include

-I/home/strike/tmp/xdebug-2.0.0RC4/main

-I/home/strike/tmp/xdebug-2.0.0RC4

-I/usr/include/php4 -I/usr/include/php4/main

-I/usr/include/php4/Zend -I/usr/include/php4/TSRM

-DHAVE_CONFIG_H -g -O0 -c

/home/strike/tmp/xdebug-2.0.0RC4/xdebug.c -o

xdebug.lo mkdir .libs

ビルド完了

(tempnam と tmpnam に関する警告は無視しても安全です)。

makeを使うとXdebug拡張子xdebug.soが生成されます。

拡張機能をインストールします: $ sudo make install

共有拡張機能のインストール: /usr/lib/php4/20020429/

続行する前に、マウスを使用して、前のコマンドで表示されたディレクトリを選択してコピーします。このパスは、拡張機能を構成する最終ステップで重要です。

好みのテキストエディタでphp.iniファイルを開き、次のコードを追加します: zend_extension = /usr/lib/php4/20020429/xdebug.so

xdebug.profiler_enable = オフ

xdebug.default_enable = オン

最初の行は Xdebug 拡張機能をロードします; 2 行目は Xdebug のプロファイラー機能を無効にし (単純にするためです)、3 行目は拡張デバッグ機能を有効にします。

Xdebug 拡張機能がインストールされ有効になっていることを確認するには、Web サーバーを再起動し、コード

を使用して単純な 1 行の PHP アプリケーションを作成します。ブラウザで http://localhost/phpinfo.php などのファイルを指定して下にスクロールすると、図 1 のような内容が表示されるはずです。

図 1. Xdebug 拡張機能がインストールされ、実行されているかどうかを確認します

Xdebug 扩展已启用

注: phpinfo() の出力に Xdebug セクションが表示されない場合は、Xdebug の読み込みが失敗しています。 Apache エラー ログに理由がリストされています。一般的なエラーには、zend_extension への間違ったパスや他の拡張機能との競合が含まれます。たとえば、XCache と Xdebug を使用する必要がある場合は、必ず最初に XCache をロードしてください。ただし、Xdebug は開発中に使用することを目的としており、xdebug.so へのパスが正しいことを前提としているため、他の拡張機能を無効にして再試行する必要があります。その後、拡張機能を再度有効にして、キャッシュの影響などの追加のテストを実行できます。 Xdebug サイトには、その他のトラブルシューティングのヒントがいくつかあります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486020.html技術記事 PHP を使用すると、システム管理や従来のデータ処理などのタスク用のコマンド ライン スクリプトを作成できますが、プログラミング言語は Web アプリケーションのパフォーマンスに大きな影響を与えます。使用中…
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター