私はxdbugを使ってPHPプロジェクトのコードをしばらくデバッグして理解してきましたが、PHP内部で何が起こっているのかが不明確な状況に陥っていることがあります。PHPのデバッグ
実際のPHP組み込み関数をトレースできるようにxdebugやgdbを設定することはできますか?
私はxdbugを使ってPHPプロジェクトのコードをしばらくデバッグして理解してきましたが、PHP内部で何が起こっているのかが不明確な状況に陥っていることがあります。PHPのデバッグ
実際のPHP組み込み関数をトレースできるようにxdebugやgdbを設定することはできますか?
macosx、solaris、または最近のfreebsdシステムを使用している場合は、少しdtraceを投げることができます。それはあまりにも多くの人々のために便利になることができます "WTFはPHPをやっている?瞬間
xdebugは、内部コードではなくPHPコードをトレースすることを目的としています。内部はバグフリーであると仮定されています(明らかに時々そうではありませんが、xdebugの範囲を超えています)。
組み込み関数が何をしているかを知りたければ、いつもPHPソースを見ることができますが、時にはかなり毛深いこともあります。 PHPマニュアルのドキュメントは、私が彼らが何をするのかを知りたい時には、いつも私に十分役立ってきました。
デバッグシンボルでコンパイルされている場合は、gdbを使用してCレベルのコードをトレースできます。スタートのためにここを見て:Zendのエンジンの出力をテストするため
一つの方法を、オペコードの内部を覗くために、あなたが使用することができますも表示されますDerick Rethan's VLD(バルカンロジックDissasembler)、になる。PECL。 注:は、* nixシステムでのみ動作します(要件については、サイトを参照してください)。
これらのオペコードをデバッグするいくつかの例は、Understanding OpcodesおよびHow long is a piece of string?などの記事でSara Golemon's blogにあります。
いいです、私もそれを試してみる必要があります。ありがとう! – xkcd150
することができますphp libraryと素晴らしいGoogle Chrome拡張PHP Consoleもあります:
誰にもおすすめ!
速いgoogleが見つかったhttp://blogs.sun.com/bmc/entry/dtrace_and_php_demonstrated - 開始するための詳しい情報がある場合は、 – xkcd150
を投稿してください。私はそのリンクを認識していませんでした。私は、PHPからのすべてのファイルシステムコールをトレースするだけで十分な問題を抱えていました。特にfopensと群れを探しています。 PHPはinclude_once/require_once宣言が好きではないことが判明しました(私が扱っていたように、use(perl)/ import(java)置換ではありません)。参照されるファイルが多すぎると、群れによって死が起こるでしょう。 – Trey
ああ、これは良いリソースだった。 http://www.brendangregg.com/DTrace/dtrace_oneliners.txt – Trey