2013-03-01 32 views
8

PreambleWaiting For kết nối (netbeans-Xdebug) OS X MAMP

Sau nhiều giờ, tôi đã không thể có được NetBeans để kết nối với Xdebug. Vài tháng trước, sau khi nâng cấp từ một phiên bản cũ của MAMP lên MAMP PRO, việc gỡ lỗi hoạt động hoàn hảo. Một tuần trước, nó bắt đầu nổi lên. Nó sẽ xuất hiện để kết nối nhưng sẽ không dừng lại ở các điểm ngắt. Khởi động lại NetBeans (v7.0.1) và apache đôi khi có nó làm việc trong một thời gian ngắn.

Tôi thực sự cần nó cố định vì vậy tôi đã cài đặt phiên bản MAMP PRO mới nhất (2.1.2). Bây giờ tôi nhận được tin nhắn Waiting For Connection mãi mãi.

Testing Tôi đã làm

Trong khi chờ đợi tin nhắn kết nối là có với thanh di chuyển, tôi nhìn để xem nếu nó nghe. Đó là ...

# lsof -i -n -P |grep 9001 
java 6496 tim 230u IPv6 0xffffff80239d8190  0t0 TCP *:9001 (LISTEN) 

Trong NetBeans php cấu hình tôi đã phiên dịch thiết lập để: /Applications/MAMP/bin/php/php5.4.10/bin/php

Thực thi như sau:

# /Applications/MAMP/bin/php/php5.4.10/bin/php -i | grep xdebug 

nói với tôi Xdebug đang chạy cũng như phpinfo()

tôi có (nhiều lần) khẳng định rằng tôi có số cổng tương tự ở khắp mọi nơi. Tôi đã thử cổng 9000 và 9001.

Làm một cái đuôi trên xdebug.log sau đó bắt đầu một phiên làm việc từ trình duyệt mà không bắt đầu một phiên debug trong NetBeans sản xuất:

I: Connecting to configured address/port: localhost:9001. 
E: Could not connect to client. :-(

Với sự chờ đợi cho thông điệp kết nối bắt đầu một phiên làm việc từ trình duyệt, tôi có được điều này trong nhật ký:

: Connecting to configured address/port: localhost:9001. 
I: Connected to client. :-) 
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///Users/tim/MAMPSites/facts.tvd.us/htdocs/sendfile/tim.php" language="PHP" protocol_version="1.0" appid="7279" idekey="netbeans-xdebug"><engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init> 

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response> 

file php.ini của tôi có những điều sau đây:

[xdebug] 
zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" 
xdebug.remote_enable=on 
xdebug.remote_log="/var/log/xdebug.log" 
xdebug.remote_host=localhost 
xdebug.remote_handler=dbgp 
xdebug.remote_port=9001 
xdebug.idekey="netbeans-xdebug" 

Cập nhật

Tôi chỉ nhận thấy rằng các lệnh lsof trên cho thấy NetBeans lắng nghe trên IPv6. Buộc java (NetBeans) để sử dụng ipV4 không giúp đỡ.

launchctl setenv JAVA_TOOL_OPTIONS -Djava.net.preferIPv4Stack=true 

Tôi tìm thấy bài đăng đề xuất kiểm tra để xác nhận xdebug đang hoạt động chính xác. Tạo một file php:

<?php 
$address = '127.0.0.1'; 
$port = 9000; 
$sock = socket_create(AF_INET, SOCK_STREAM, 0); 
socket_bind($sock, $address, $port) or die('Unable to bind'); 
socket_listen($sock); 
$client = socket_accept($sock); 
echo "connection established: $client"; 
socket_close($client); 
socket_close($sock); 
?> 

Run nó từ dòng lệnh và tải bất kỳ trang nào trong trình duyệt của bạn với những điều sau đây vào cuối url:

?XDEBUG_SESSION_START=nb 

Nếu nó ra một cái gì đó như "kết nối thành lập : ID tài nguyên # 5 ", xdebug đang hoạt động chính xác. Cùng với đó, tôi đã cài đặt lại Java và NetBeans. Tôi đã nói với NetBeans KHÔNG nhập các sở thích hiện có của tôi ... Vẫn không có kết nối.

Update2

Tôi đã cài đặt phpStorm IDE cho Mac. Tôi đã học đủ về nó để có được trình gỡ rối đang chạy với thiết lập MAMP và xdebug hiện có của tôi. Tôi nghĩ rằng điều này xác nhận vấn đề là với NetBeans.

Tại thời điểm này, việc làm này dường như là không thể. :(

+1

độ phân giải cuối cùng của tôi cho vấn đề này ... Tôi đã hoàn toàn chuyển sang phpStorm. Sau khi sử dụng nó trong một vài ngày, nó có vẻ là một IDE tốt hơn nhiều (theo ý kiến ​​của tôi). Gỡ lỗi chỉ là "công trình". –

+0

Chính xác ở đây! Tôi đã cố gắng để cài đặt xdebug với netbeans trong 2 tuần, sau đó tôi đã từ bỏ và chuyển sang PHPStorm (trên Windows7 btw). Hoạt động hoàn hảo ra khỏi hộp. Đôi khi nó đáng để trả tiền cho phần mềm tốt. – Sliq

Trả lời

7

tôi hỏi những điều tương tự và có câu trả lời khá tốt này: How to track execution time of each line/block of lines/methods in PHP?, bên cạnh đó tôi có câu trả lời này cũng về một câu hỏi khác hiện đang chạy với cùng một nội dung

Một số lưu ý thêm vào đó (thứ i. 've thu được trong SO bài viết khác trong nghiên cứu của riêng tôi với vấn đề này):

  1. cảng có thể cũng 9001 (dường như làm việc cho một số người trong khi 9000 không)
  2. Chuyển sang PHPStorm IDE là. một giải pháp thay thế thực sự giải quyết vấn đề này (như PHPStorm đã bao gồm hoàn toàn chạy xdebug rồi).
  3. Tải xuống phiên bản xdebug mới qua trình hướng dẫn (http://xdebug.org/wizard.php) và nếu bạn làm theo hướng dẫn, có thể bạn sẽ may mắn.
  4. Tắt tường lửa có thể hữu ích.
  5. Thêm vào php.ini: xdebug.idekey=netbeans-xdebug.
  6. Tìm hiểu xem bạn có tệp xdebug.ini và thêm các dòng php.ini có liên quan đến xdebug vào tệp đó hay không.
  7. bạn phải bỏ đánh dấu dòng zend_extension (tức là xóa ; khi nhận thức), vì vậy Xdebug thực sự được tải.
  8. đảm bảo Xdebug được tải, gọi phpinfo() từ tệp PHP (chỉ để chắc chắn).
+1

Cảm ơn. Thêm 'xdebug.idekey = netbeans-xdebug' vào php.ini đã làm phép thuật cho tôi. –

+0

Thêm xdebug.idekey = netbeans-xdebug cũng đã khắc phục sự cố của tôi với NetBeans. Và tôi cũng đã cài đặt PHPStorm nhưng tiếc là nó không có XDebug được cài đặt sẵn và nó cần nhiều bước bổ sung, và nó vẫn không thể thực hiện gỡ rối. Mặc dù nó là tuyệt vời IDE nhưng đối với gần $ 150/năm tôi mong đợi nó để làm việc ngay ra khỏi hộp hoặc với thiết lập tối thiểu, đó không phải là trường hợp.Tôi sẽ ở lại với NetBeans ngay bây giờ. – zeeshan

0

Khi tải xuống và cài đặt sạch netbeans hoạt động trên xampp, xdebug hoạt động ngoại trừ sẽ không dừng tại điểm ngắt. Thay đổi php.ini thành: xdebug.remote_enable = 1 (từ 0) và xdebug làm việc như mong đợi!

5

Xdebug sẽ chỉ kết nối nếu có tệp index.php trong thư mục dự án của bạn, vì vậy hãy kiểm tra để đảm bảo bạn có tệp.

+0

Bạn nói đúng. Nếu chỉ có index.html nó sẽ không hoạt động – ironbone

1

nó hoạt động cho tôi ngay bây giờ. Tôi đã cài đặt LAMP. Tôi sửa đổi theo tất cả các câu trả lời từ trên, bắt đầu apache2 và bây giờ nó bay ... tôi hạnh phúc ... trong một thời gian tôi nghĩ để chuyển sang phpstorm, nhưng tôi xem xét lại ... tinh chỉnh nhiều hơn một chút ... et voila. nó hoạt động.

Ở đây những gì tôi có trong php.ini

zend_extension = /usr/lib/php5/20121212/xdebug.so 

xdebug.max_nesting_level = 250 
xdebug.auto_trace=On 
xdebug.remote_enable=On 
xdebug.remote_port=9001 
xdebug.remote_handler=dbgp 
xdebug.remote_host=localhost 
xdebug.remote_log="/var/log/xdebug.log" 
xdebug.trace_output_dir=/var/www/AMRO 
xdebug.idekey="netbeans-xdebug" 
Các vấn đề liên quan