リモートデバッグ時にローカルソースを参照してくれなくなったら

リモートデバッグ機能

  • PDTにはできない、Zend Studioだけの機能として、Webブラウザからのリモートデバッグ機能があります。
  • ブラウザ(IE/FireFox)にプラグインをインストールし、デバッガをセットしてあるWebサーバーにアクセスするだけでZend Studioが割り込み、ステップ実行や変数の参照ができます。
  • 普通(?)は、怪しいところにvar_dump、print_r、echo を仕込んだり、ログ出力して動きを確認すると思います。そしてそのコードを消し忘れてシステムテストで発覚するとか。。。
  • ソースにステップインしてデバッグできれば、元のソースを変更しないので余計な心配不要になります。

サーバーソース参照とローカルソース参照

  • ステップインするソースはどこから取得するのかを選べます。
    • サーバーソースの場合、実行中のソースをそのままサーバーからZend Studioへ転送されます。あらかじめソースを準備しておく必要は無いのですが、他のソースとの関連チェックが弱くなります。たとえば、動的にincludeされるclassなどの補完がききません。また、当然ですがソースの修正ができません。
    • ローカルにソースを準備しておけば、関連チェック・文法チェックもしっかりできますし、当然ソースコードの修正もそのままできます。
    • 通常、開発はローカルソースで行っています。ローカルといっても開発サーバー内のソースとリンクしていますが。

機能しない

  • 上記のように非常に強力なローカルソースによるリモートデバッグなのですが、ある日突然機能しなくなりました。厳密に言うとデバッグ機能自体は動作していて「サーバーソース」動作ということなのですが、非常に不便。
  • サーバーソースだと、該当のソースにたどり着くまでステップ実行していく必要があります。動的にファイルをincludeしていくフレームワークだと、大変です。ローカルソースなら予め確認したい位置にbreak pointをセットしておけるのでらくちんです。
  • これは困る。といことで、設定項目の海をさまよいました。


結論

  • Window > Preferences > PHP > PHP Servers > Edit
  • Edit Server ダイアログ > Path Mapping をすべて remove したところ、ローカルソースを参照してくれるように戻ってくれました。
  • 今回は関係ありませんでしたが、Webブラウザのプラグインの設定 「Debug Local Copy」もチェックと思われます。

facebook slideshare rubygems github qiita