Я пытался отладки Eclipse, для того, чтобы понять, что происходит в моем Mac OS X.
сначала найти текущий процесс Eclipse, выполнив команду:
$ ps -ef | grep eclipse
501 15160 373 0 4:21PM ?? 2:57.19 /Users/myuser/apps/eclipse/Eclipse.app/Contents/MacOS/eclipse -psn_0_651423
Затем проследить систему Eclipse, называет:
$ sudo dtruss -fp 15160
[... omissis ...]
accept(0xA0, 0x1224C37E8, 0x1224C37E4) = 103 0
setsockopt(0x67, 0xFFFF, 0x1002) = 0 0
setsockopt(0x67, 0xFFFF, 0x1001) = 0 0
read(0x67, "4\0", 0x1) = 1 0
read(0x67, "7\0", 0x1) = 1 0
read(0x67, "7\0", 0x1) = 1 0
read(0x67, "\0", 0x1) = 1 0
read(0x67, "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<init xmlns=\"urn:debugger_protocol_v1\" xmlns:xdebug=\"http://xdebug.org/dbgp/xdebug\" fileuri=\"file:///opt/local/var/db/php5/pear/pear-ini.php\" language=\"PHP\" protocol_version=\"1.0\" appid=\"14961\" idekey=\"ECLIPSE_DB", 0x1DD) = 477 0
read(0x67, "\0", 0x1) = 1 0
[... omissis ...]
Здесь я поймал первую строку, отправленную из xdebug.
Это линия, где eclipse читает фрагмент XML. Я полагаю, что это часть DBGp.
<?xml version="1.0"
encoding="iso-8859-1"?>
<init xmlns="urn:debugger_protocol_v1"
xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
fileuri="file:///opt/local/var/db/php5/pear/pear-ini.php"
language="PHP"
protocol_version="1.0"
appid="14961"
idekey="ECLIPSE_DB
Глядя на fileuri
я обнаружил Xdebug пытается начать сеанс отладки с /opt/local/var/db/php5/pear/pear-ini.php
. Файл pear-ini.php
не существует в моих проектах eclipse.
Так я создал новый проект в моей Eclipse, рабочее пространство и здесь я скопировал файл /opt/local/var/db/php5/pear/pear-ini.php
Он работает, Eclipse PDT Теперь нашел файл, который он искал, и отладчик, наконец, начать правильно. Он даже спрашивает меня, хочу ли я переключиться на перспективу Debug.
Заключение
Если вы столкнетесь с этой странной ошибкой: «Нет соответствующий файл находится или не выбран файл», а это означает именно то, что написано. Хорошо, мой Eclipse не смог найти файл, но это также означало, что он пытается найти файл, который вышел из его рабочей области. Может быть, файл, который загружается из PHP-движка по какой-то странной причине. В моем случае pear-ini.php
добавляется автоматически pear.ini
$ cat pear.ini
; Do not edit this file; it is automatically generated by MacPorts.
; Any changes you make will be lost if you upgrade or uninstall php5-pear.
; To configure PHP, edit /opt/local/etc/php5/php.ini.
auto_prepend_file = '/opt/local/var/db/php5/pear/pear-ini.php'
+1 для приятного выкапывания, ваши усилия были оценены. – SparKot
Спасибо :) Сообщение об ошибке было действительно раздражающим, даже потому, что оно не объясняло точно, что случилось. – freedev
Комментарий удален: найдено решение. Большое вам спасибо за сообщение! –