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'
+1 để được đào sâu, nỗ lực của bạn được đánh giá cao. – SparKot
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
Đã 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 !! –