2011-10-27 11 views
4

私は基本的にZend Frameworkのオートローダーを使って自分の機能をオートロードしています。しかし、いつも私がデバッグしているので、関数を呼び出すとxdebugは呼び出されている実際の関数に行く前にオートロード関数に行きます。xdebugにデバッグ時に特定の機能をスキップさせる

だから私は機能func()を呼び出す場合、それは最初autoload()に行くだろうし、その後func()私はFUNC()を呼び出した場合など

理想的には、それは(FUNCに直接行くべき、時間的にデバッグコストを増加させます)、オートローダーを使用しています。

xdebug(またはPHP/Zendハックなど)を指定して、デバッグ中に特定の関数(この場合はオートロード関数)をスキップする方法はありますか?

+0

「オートロード機能に行く」とはどういう意味ですか? xdebugはどうやってそこに行きますか? – deceze

+1

デバッガがオートロード機能に入るステップ –

+0

はい、それはあなたのプログラムが行うものです。おそらく、それを隠してそこにバグを残すのはもっと迷惑でしょう。私はこれがどのように「デバッグコスト」を大幅に増加させるのかよく分かりません... – deceze

答えて

1

コードをシングルステップ実行する場合は、実際にはブレークポイントの使用を検討する必要があります。調査中のコードブロックの先頭にブレークポイントを設定した場合、「実行するブレークポイント」オプションを使用して、調査対象のコードより前に実行されるすべてのコードをスキップすることができます。

調査対象のクラスのコンストラクタの先頭にブレークポイントを設定するか、オブジェクトのインスタンス化が正常であると確信している場合に調査したいメソッドの開始点を設定すると、オートローダをスキップできます。

NetbeansとEclipse PDTはどちらも、調査したいコードの行番号をクリックするだけでブレークポイントを設定できます。

さらに、「ステップイン」オプションを使用してジャンプした関数/メソッドから飛び越すことができるデバッガには「ステップアウト」オプションがあります。オートローダを見つけた場合は、すぐに外してください。嗜好のPDTとEclipseで

+1

オートローダーから抜け出すと、典型的な結果は、関数に送られる代わりに、関数が終了した後に送信されるということです。 ブレークポイントは便利ですが、問題が1つあります。特定の条件の下でしか関数をデバッグしたくない場合は、ブレークポイントを置くことで気にしない場合でもヒットします。あなたが実際に気にかけている部分に行くためには、10〜30回続けなければなりません。 条件付きブレークポイントは機能するかもしれませんが、悲しいことにサポートされていません。 – srcspider

+0

XDebugには条件付きブレークポイントはありませんが、それを回避するのは難しいことではありません。ちょうど 'if(条件){do_some_kind_of_noop_here(); } 'とnoopにブレークポイントを置く – GordonM

6

: - >デバッグ - PHP>ステップフィルタリング クリックフィルターを追加し、私はより多くの視覚的な指示

を参照してください step_filtering_preferences

をAutoloader.incを追加し、もはやそれを通過する必要があります

+0

これは正解でなければなりません。 –

関連する問題