2013-02-28 24 views
8

Tôi đang cố gắng để gỡ lỗi từ xa một ứng dụng web php nhưng bất cứ lúc nào tôi cố gắng bắt đầu một phiên debug Eclipse lũ tôi với một loạt các popup:XDebug PHP Eclipse - Lỗi Không có tập tin thích hợp nằm hoặc không có tập tin được lựa chọn

Lỗi trình gỡ lỗi: "Không có tệp thích hợp nào được đặt hoặc không có tệp nào được chọn. Gỡ lỗi đã chấm dứt".

enter image description here

Đây là hiện Xdebug 2.2.1 cấu hình của tôi:

[xdebug] 
xdebug.remote_enable=1 
xdebug.remote_autostart=0 
xdebug.remote_host="localhost" 
xdebug.remote_port=9000 
xdebug.remote_handler="dbgp" 

Đây là Eclipse 4.2.1 debug cấu hình của tôi:

enter image description here

Xdebug được cài đặt một cách chính xác, Tôi thấy nó được kích hoạt trong đầu ra phpinfo().

Trả lời

7

tôi đã cố gắng để gỡ lỗi Eclipse để hiểu những gì đang xảy ra trong Mac OS X. tôi
Đầu tiên tìm thấy quá trình Eclipse hiện đang chạy:

$ 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 

Sau đó, theo dõi hệ thống Eclipse gọi:

$ 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 ...] 

Ở đây tôi đã bắt được dòng đầu tiên được gửi từ xdebug.
Đây là dòng mà nhật thực đang đọc một đoạn XML. Tôi cho rằng đây là phần 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 

Nhìn vào fileuri tôi phát hiện ra Xdebug đang cố gắng để bắt đầu phiên gỡ lỗi với /opt/local/var/db/php5/pear/pear-ini.php. Tệp pear-ini.php không tồn tại trong các dự án nhật thực của tôi.

Vì vậy, tôi tạo ra một dự án mới trong không gian làm việc Eclipse của tôi và ở đây tôi đã sao chép các tập tin /opt/local/var/db/php5/pear/pear-ini.php

Nó hoạt động, Eclipse PDT bây giờ tìm thấy file nó đang tìm kiếm và gỡ lỗi cuối cùng bắt đầu một cách chính xác. Nó thậm chí còn hỏi tôi nếu tôi muốn chuyển sang phối cảnh Debug.

Kết luận
Nếu bạn va vào lỗi lạ này: "Không có tập tin thích hợp nằm hoặc không có tập tin được lựa chọn", cũng có nghĩa là chính xác những gì được viết. Được rồi, Eclipse của tôi không thể tìm thấy tệp, nhưng nó cũng có nghĩa là nó đang cố gắng tìm một tệp được lấy từ vùng làm việc của nó. Có thể là một tệp được tải từ công cụ PHP vì một số lý do lạ. Trong trường hợp của tôi pear-ini.php được thêm tự động bởi 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' 
+2

+1 để được đào sâu, nỗ lực của bạn được đánh giá cao. – SparKot

+0

Cảm ơn :) Thông báo lỗi thực sự gây phiền nhiễu, ngay cả vì nó không giải thích chính xác những gì sai. – freedev

+0

Đã xóa nhận xét: đã tìm thấy giải pháp. Cảm ơn bạn rất, rất nhiều vì đã đăng bài này !! –

0

Tôi đang sử dụng Linux và gắn quá trình sử dụng strace Eclipse (Java thực subprocess tất nhiên) Tôi đã không thể bắt lỗi như vậy.

Đối với những người gặp cùng sự cố nhưng không thành công trong việc giải quyết nó và nếu bạn đã thực hiện cập nhật Eclipse hoặc PDT cách đây không lâu, hãy cố gắng xóa dự án của bạn và tạo lại dự án.Nó đã giải quyết được vấn đề của tôi trong đó việc gỡ lỗi xdebug và dọn dẹp dự án Eclipse không thành công.

1

Tôi đã gặp vấn đề tương tự và nguyên nhân không phải là pear.ini hoặc pear-ini.php như đã đề cập ở trên.

Lý do rất đơn giản. Tôi đã cài đặt cả hai PDT và Aptana PHP Plugin trên môi trường Eclipse của tôi. Chỉ cần chuyển đổi cả loại dự án và loại cấu hình gỡ lỗi thành của PDT, mọi thứ đều hoạt động tốt.

Cảm ơn bạn đã đăng chủ đề hay. :)

3

Tôi đã có cùng một vấn đề này, và trong khi câu trả lời của freedev đã chỉ cho tôi đúng hướng, nó đã không thực sự giải quyết nó.

Sử dụng dtruss không giúp được gì: Tôi không thấy phần tử XML <init> ở bất kỳ đâu. Nhưng tôi đã có thể tìm thấy nó một khi tôi đặt xdebug.remote_log=/tmp/xdebug.log trong php.ini, và sau đó đuôi các tập tin /tmp/xdebug.log như tôi đã cố gắng để bắt đầu một phiên gỡ lỗi từ xa. Các /opt/local/var/db/php5/pear/pear-ini.php một lần nữa được đề cập. Nhưng tôi tệp đó trong hệ thống tệp của tôi, vì vậy tôi không biết tại sao tôi vẫn nhận được thông báo lỗi mơ hồ này về một tệp bị thiếu.

Tuy nhiên, bây giờ tôi đã biết rằng Pear đã tham gia vào sự cố, tôi đã thử gỡ cài đặt đơn giản Pear (sudo port uninstall php53-pear), vì tôi không thực sự sử dụng nó nữa. Và lo và nhìn, đã sửa nó! Tôi không còn nhận được thông báo lỗi "Không có tệp thích hợp" và tôi có thể gỡ lỗi như bình thường.

Khi gỡ cài đặt php53 lê, cài đặt fileuri trong dữ liệu XML đó bây giờ là tệp index.php cho trang web Drupal mà tôi đã cố gắng gỡ lỗi. Vì vậy, tôi nghĩ rằng bạn nên mong đợi tệp điểm nhập cho các yêu cầu web của bạn xuất hiện trong phần tử XML <init> đó. Tôi muốn tôi biết tại sao Pear đã cài đặt những thay đổi mà mặc dù vậy, thuộc tính fileuri. Có thể cấu hình Pear để ngăn chặn rối tung với Xdebug sẽ tốt hơn rất nhiều so với việc gỡ cài đặt Pear.

+2

Cảm ơn lời đề nghị 'debug.remote_log', nó là một giải pháp dễ dàng và sạch hơn. BTW, tôi không chắc bạn có được điều này: bạn nên tạo một dự án Eclipse mới và sao chép pear-ini.php ở đó. Nói cách khác, chỉ khi pear-ini.php nằm trong một dự án Eclipse, bạn sẽ có thể gỡ rối mà không có cửa sổ bật lên gây phiền nhiễu này. – freedev

+0

Đó thực sự chỉ là một hack xảy ra với công việc. Điều đang xảy ra ở đây là Pear bằng cách nào đó đang vặn vẹo với điểm vào của Xdebug. Giải pháp thực sự sẽ là cấu hình lại Pear để ngừng làm điều đó. Tôi chỉ ước tôi biết làm thế nào. – CoreDumpError

0

Nếu trình gỡ lỗi của bạn sử dụng để làm việc nhưng sau đó đột nhiên nó bắt đầu ném thông báo đó, có lẽ bạn vừa đánh dấu một tệp nguồn mà Eclipse không thấy nó như là một phần của dự án hoặc không thể định vị nó.

Ví dụ trong khi tôi gỡ lỗi một plugin tôi đã viết cho Wordpress tôi đã đánh dấu một số tệp Wordpress bên ngoài có vẻ như Eclipse/Xdebug không thể truy cập/định vị. Khi tôi xóa dấu trang đó, mọi thứ sẽ trở lại bình thường.

Nếu trường hợp đó xảy ra thì chỉ cần Xóa tất cả dấu trang.