目次
主な機能:
インストール
基本的な使い方
パラメータの紹介
共通機能

PHPデバッグツールPHPDBG

Jun 20, 2016 pm 12:38 PM

概要

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"......
ログイン後にコピー

可以通过这种方式,在调试过程中动态的修改变量值,查看执行效果。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

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

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

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

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

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

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

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

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

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

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

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

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

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

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

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

See all articles