0

他の人のコードを使用して時間を節約するのが大好きです。そして、自分のスクリプトだけでなく、他の開発者から継承したスクリプトの効果的なデバッグを開始したいと考えています。

を読んでいますがdebug_backtrace()、探しているものかどうかわかりません。

基本的に、クラスがインスタンス化されるときに、どのメソッドが起動されているかを知りたいです。正直なところ、できる限り多くのことを知りたいのですが、1 つのクラス内で何が起こっているかを知ることができれば素晴らしいと思います。

<?php
require('aHugeComplicatedClass.php'); // sooooo many methods

try {

   $obj = new aHugeComplicatedClass($params);

}
catch(Exception $ex){

   var_dump($ex);

}

?>

debug_backtraceに関する PHP のドキュメントから、debug_backtrace() 関数をすべてのクラス内の各メソッド/関数内に配置して、どのように到達したかを確認する必要があるようです。

私はこれをあまりにも文字通りに読まなければなりません。それは大量の変更になります。

クラスをインスタンス化するphpファイルがあり、このクラスが他のクラスから拡張されていることがわかっている場合、そのオブジェクトをデバッグする最も簡単な方法は何ですか?

4

2 に答える 2

0

そのようなものすべてを取得するために NuSphere PhpED を使用します。指定された例外やエラーでデバッガーを停止させ、php 関数呼び出し、php メソッド呼び出し、埋め込み関数呼び出し、埋め込みメソッド呼び出しを含む完全な呼び出しスタックを表示できます。

http://www.nusphere.com/products/phped.htm

最初に、彼らのデバッガーが最高であり、これを確認できると言われました。それはOSSプロジェクトに由来します

http://sourceforge.net/projects/dbg2/

PhpED IDE を使用して、開発の全サイクル (コーディング、デバッグ、プロファイリング、テスト、および運用サーバーへのアップロード) を実行します。

于 2014-06-02T15:28:43.083 に答える
0

XDebug をインストールして、リモート デバッグを IDE (PhpStorm や Eclipse など) に接続します。そうすれば、すべてのエラーで適切なスタック ダンプを取得できます。また、コードをブレークポイントして、スタックとすべてのオブジェクトの内部を自由に調べることができます。 .

http://xdebug.org/

また、これを使用して、コードを変更せずにアプリケーションの呼び出しチェーンをプロファイリングすることもできます (これは、あなたが望んでいるもののように聞こえます)。大きなログ ファイルを生成するプロファイリング オプションを使用することで、これらのログを webgrind にロードし、優れたツリー構造で誰が何を呼び出しているかを視覚的に調べることができます。

https://code.google.com/p/webgrind/

Zend ツール チェーンは、この種のより詳細なデバッグ機能をすぐに提供することもできます。

あるいは、App Dynamics や New Relic などのアプリケーション パフォーマンス監視エージェントをインストールして、同様のコード プロファイリングを行います。これは、デバッグがオプションではなく、プロファイリングにコストがかかるリモート インストール (つまり、プロダクション) に最も役立ちます。

于 2014-05-21T12:36:01.647 に答える