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

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

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

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 までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles