PHPデバッグツールPHPDBG
概要
PHPDBG は、コードを変更せず、パフォーマンスに影響を与えることなく、PHP 実行環境を制御できる PHP SAPI モジュールです。
PHPDBG は、軽量で強力で使いやすい PHP デバッグ プラットフォームになることを目指しています。 PHP5.4以降で利用可能です。 php5.6 以降のバージョンでは内部的に統合されます。
主な機能:
- シングルステップデバッグ
- 柔軟なブレークポイントメソッド (クラスメソッド、関数、ファイル: 行、メモリアドレス、オペコード)
- php の eval を直接呼び出すことができます
- 現在実行されているコードを表示できます
- ユーザー空間 API (ユーザーランド/ユーザー空間)
- 便利な統合
- 指定された PHP 設定ファイルをサポート
- JIT グローバル変数
- readline サポート (オプション)、ターミナル操作がより便利
- Java GUI を使用したリモート デバッグ
- 操作は簡単 (詳細はヘルプを参照)
インストール
phpdgb を使用するには、まず php ソース コード パッケージをダウンロードする必要があります。次に、phpdgb のソース コード パッケージをダウンロードし、php ソース コード パッケージの sapi ディレクトリに配置します。最後に、インストール コマンドを実行できます。コンパイルとインストールの例は次のとおりです。 php のソース コード パッケージをダウンロードし、/home/php ディレクトリに配置したと仮定します。
#cd /home/php/sapi#git clone https://github.com/krakjoe/phpdbg#cd ../#./buildconf --force#./config.nice#make -j8#make install-phpdbg
注: 1. php バージョンが php5.6 以降の場合、phpdbg は php コード パッケージに統合されているため、個別にダウンロードする必要はありません。 2. コンパイルパラメータに –enable-phpdbg を忘れずに追加してください。 3. コンパイル時パラメータ –with-readline はオプションで追加できます。追加しないとphpdbgの履歴やその他の機能が使用できなくなります。
基本的な使い方
パラメータの紹介
phpdbg は、コマンドラインで php をデバッグできる php の sapi です。一般的に使用されるパラメータは次のとおりです。
次のスイッチが実装されています (cli SAPI と同様): -n php ini を無視します -c パス内の php ini を検索します -z load zend extension -d define php ini エントリ次の変更により、phpdbg のデフォルトの動作が切り替わります。-v 静音性を無効にします。-s を有効にします。ステッピングを有効にします。-e 実行コンテキストを設定します。-b 退屈 – コンソールでの色の使用を無効にします。-I 無視します。.phpdbginit (デフォルトの init ファイル)。-i .phpgdbinit を上書きします。 location (-I を意味します)-O oplog 出力ファイルを設定します-q 起動時にバナーを印刷しません-r run に直接ジャンプします-E eval() を介したステップを有効にします注: -rr を渡すと、実行後に phpdbg が返されるのではなく終了します。コンソールへ
共通機能
以前 gdb ツールを紹介しました。実際、phpdbg と gdb の機能はいくつかの点で非常に似ています。たとえば、ブレークポイントを設定したり、ステップスルーしたりできます。 Gdb は C または C++ 言語のデバッグに重点を置いているのに対し、phpdbg は PHP 言語のデバッグに重点を置いているというだけです。以下に、phpdbg の一般的なデバッグ機能をいくつか紹介します。デバッグするコードは次のとおりです。 test_phpdbg_inc.php ファイルのソース コードは次のとおりです。
<?php function phpdbg_inc_func(){ echo "phpdbg_inc_func \n"; } ?>
ファイル test_phpdgb.php のソース コードは次のとおりです。
<?php include(dirname(__FILE__)."/test_phpdbg_inc.php"); class demo{ public function __construct(){ echo __METHOD__.":".__LINE__."\n"; } public function func($param){ $param++; echo "method func $param\n"; } public function __destruct(){ echo __METHOD__.":".__LINE__."\n"; } } function func(){ $param = "ali"; $param = $param + "baba"; echo "function func $param\n"; } $demo = new demo(); $demo->func(1); func(); phpdbg_inc_func();?>
phpdbg を起動します
phpdbg が正常にインストールされると、インストール ディレクトリの bin ディレクトリに配置されます。 bin ディレクトリに入り、phpdbg を直接入力します。以下のように:
#phpdeg[Welcome to phpdbg, the interactive PHP debugger, v0.4.0]To get help using phpdbg type "help" and press enter[Please report bugs to <http://github.com/krakjoe/phpdbg/issues>]prompt>
デバッグする php スクリプトをロードするには、exec コマンドを実行するだけです。以下のように:
#phpdbg......prompt> exec ./test_phpdbg.php
もちろん、phpdbg の起動時に e パラメータを指定することもできます。以下のように:
#phpdbg -e ./test_phpdbg.php
ヘルプ情報を表示
これまでに他のデバッグ ツールを使用したことがある場合は、phpdbg がそれらに似ていることがわかるでしょう。ただし、使用の初期段階では、ヘルプ情報を取得する必要があることがよくあります。 help コマンドを通じてヘルプ情報を取得できます。
......prompt> helpphpdbg is a lightweight, powerful and easy to use debugging platform for PHP5.4+It supports the following commands:Information list list PHP source......
ブレークポイントの設定
ブレークポイントを設定するコマンドは gdb と同じです。それらはすべてbreakであり、略称はbです。ただし、特定のコマンド パラメータは依然として異なります。 gdb のブレークポイント コマンドと同様に、「ファイル名: 行番号」または行番号でブレークポイントを設定できます。さらに、phpdbg には、PHP に固有のブレークポイントを設定するためのメソッドもいくつか提供されています。たとえば、opline に基づいてブレークポイントを設定したり、opcode に基づいてブレークポイントを設定したりします。
ご存知のとおり、PHP コードは最終的にオペコードに解析され、PHP カーネルによって 1 つずつ実行されます。 PHP ステートメントは複数のオペコードに解析される場合があります。オペコードによってブレークポイントを設定できれば、プログラムの実行プロセスをより正確に追跡できます。 phapdbg を使用してブレークポイントを設定する具体的な例を見てみましょう。
opline に従ってブレークポイントを設定します。 ここで言う opline は、メソッド エントリから始まる現在のコードの行番号です。たとえば、test_phpdgb.php ファイルでは、18 行目のコード「$param = $param + "baba";」の opline は 2 です。
......prompt> b func#2prompt> rdemo::__construct:5method func 2[Breakpoint #0 resolved at func#2 (opline 0x7f5b230a2e38)][Breakpoint #0 resolved at func#2 (opline 0x7f5b230a2e38)][Breakpoint #0 resolved at func#2 (opline 0x7f5b230a2e38)][Breakpoint #0 in func()#2 at ./test_phpdbg.php:18, hits: 1]>00018: $param = $param + "baba"; 00019: echo "function func $param\n";; 00020: }......
ブレークポイントの表示
gdb と同様、phpdbg もブレークポイントを表示するために info Break コマンドを使用します。例は次のとおりです。
....prompt> info break------------------------------------------------File Breakpoints:#1 /home/hailong.xhl/test_phpdbg.php:10------------------------------------------------Opline Breakpoints:#0 7ff3219e1df0 (function breakpoint)------------------------------------------------Function opline Breakpoints:#0 func opline 2....
上記の表示を通じて、ことがわかります。インフォブレークの表示結果にはブレークポイントの種類も表示されます。 # の後の数字はブレークポイント番号です。ブレークポイント番号に基づいてブレークポイントを削除できます。
ブレークポイントの削除
gdb コマンドとは異なります。 phpdbgの削除ブレークポイントはdeleteコマンドではなく、break delコマンドです。例は次のとおりです。
......prompt> break del 1[Deleted breakpoint #1]prompt>......
break del の後の数字 1 はブレークポイント番号です。
コードを表示
phpdbg查看代码的命令也是list。但是和gdb相比,使用的方式更多样一些。显示指定函数的代码:
......prompt> l f func 00017: $param = "ali"; 00018: $param = $param + "baba"; 00019: echo "function func $param\n";; 00020: } 00021:prompt>......
单步执行
phpdbg的单步执行只有一个命令 step。和gdb的step命令差不多。都是一行一行的执行代码。注意,phpdbg是没有next命令的。
....prompt> s[Breakpoint #0 resolved at func#2 (opline 0x152ba40)][L19 0x152ba70 ZEND_ADD_STRING C2 @0 ./test_phpdbg.php]>00019: echo "function func $param\n";; 00020: } 00021:....
继续执行
和gdb一样,phpdbg的继续执行命令也是continue,简写形式为c。
执行php代码
这个是phpdbg的一个特色。可以在调试的过程中使用ev命令执行任意的php代码。如:
......prompt> ev $var = "val";valprompt> ev var_dump($var);string(3) "val"......
可以通过这种方式,在调试过程中动态的修改变量值,查看执行效果。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています
