2012-02-17 15 views
23

BỐI CẢNHStep-by-step: Làm thế nào để làm kết nối xử lý sự cố Xdebug để khách hàng IDE

Sử dụng Xdebug với PHP và Komodo IDE, và Eclipse PDT.

Xdebug được cài đặt trên máy chủ và hoạt động bình thường. Điều này được xác nhận bởi vì các lệnh mã Xdebug hoạt động như mong đợi khi được chèn vào các tệp PHP trên máy chủ.

VẤN ĐỀ

Đang kết nối đến các máy trạm khách hàng không đang làm việc, và rất khó để xác định tại sao vì nó không thành công với nhiều IDE.

HỎI

Nó sẽ được tốt đẹp để có một danh sách kiểm tra từng bước khắc phục sự cố các trường hợp bạn biết Xdebug được cài đặt và làm việc trên máy chủ, nhưng khách hàng không kết nối.

Có ai có thể giúp thêm điều này để tạo danh sách kiểm tra khắc phục sự cố toàn diện không?

Cụ thể, có cách nào để đảm bảo lưu lượng truy cập mạng đến được máy khách và được định dạng đúng theo cách IDE mong đợi để xem dữ liệu không?

  • SSH vào máy chủ web và cố gắng để đạt được khách hàng:

    • có thể lưu trữ khách hàng tầm ở tất cả? (ping -c 5 xxx.xxx.xxx.xxx)
    • có thể lưu trữ cổng kết nối 9000? (nmap -p 9000 xxx.xxx.xxx.xxx)
    • nếu hai thành công ở trên thành công, đầu ra sẽ là gì?
    • nếu hai trường hợp trên không thành công, bước khắc phục sự cố tiếp theo là gì?
  • Xác nhận các thiết lập của tường lửa dựa trên phần mềm trên máy khách

  • Xác nhận các thiết lập của iptables trên máy chủ Linux
  • Xác tường lửa phần cứng b/t client và máy chủ

GOAL

Mục đích là tìm một số giải pháp trong đó người trên máy khách ít nhất có thể xác nhận rằng một cái gì đó là tiếp cận khách hàng mà không cần phải xác định xem IDE là vấn đề, vì IDE là một mức độ phức tạp có thể được giới thiệu các vấn đề.

+2

Đây là điều tôi chắc chắn muốn đưa vào tài liệu Xdebug. Tôi nghĩ rằng nó sẽ làm việc tốt nhất để có nhiều người cộng tác về điều này, vì vậy tôi đã tạo một tệp trong kho lưu trữ xdebug.org github (https://github.com/derickr/xdebug.org/blob/master/html/docs /tutorials/troubleshooting.rest) để thu thập các mẹo. – Derick

+0

Bạn đã đề cập đến 'xdebug' được cài đặt vì các lệnh hoạt động. Linh cảm của tôi là xdebug được kích hoạt chỉ cho php-cli và không php cho apache ... bạn có thể xác nhận đây là trường hợp? – Khez

+0

Câu hỏi liên quan: http://stackoverflow.com/questions/18540463/how-to-enable-xdebug-with-nginx http://stackoverflow.com/questions/11563280/php-remote-debugging-xdebug- cant-connect-to-jetbrains-php-storm-client http://stackoverflow.com/questions/1946643/why-does-xdebug-not-establish-connection-with-netbeans – Kzqai

Trả lời

13

Đây là điều tôi chắc chắn muốn đưa vào tài liệu Xdebug. Tôi nghĩ rằng nó sẽ làm việc tốt nhất để có nhiều người cộng tác về điều này, vì vậy tôi đã tạo một tệp trong kho lưu trữ xdebug.org github (https://github.com/derickr/xdebug.org/blob/master/html/docs/tutorials/troubleshooting.rest) để thu thập các mẹo. Cảm thấy tự do để ngã ba và mở rộng!

Về phía Xdebug, trong phiên bản sắp tới (2.2) nó đã được đổ trong xdebug của nó.tập tin remote_log có thêm một số chẩn đoán như là liệu nó có cố kết nối hay không và liệu kết nối đã được chấp nhận hay bị từ chối.

10

Bạn có thể sử dụng tiện ích debugclient để xác định xem khách hàng có thể nhận được kết nối Xdebug, như bạn có thể đọc trong Xdebug documentation:

Trước khi bạn bắt đầu kịch bản của bạn, bạn sẽ cần phải nói với khách hàng của bạn rằng nó có thể nhận được các kết nối gỡ lỗi, vui lòng tham khảo tài liệu của ứng dụng cụ thể về cách thực hiện việc này. Để sử dụng ứng dụng khách được đóng gói , chỉ cần khởi động nó sau khi biên dịch và cài đặt nó. Bạn có thể bắt đầu bằng cách chạy "debugclient". Nếu bạn muốn sử dụng lệnh GDB để gỡ lỗi các tập lệnh của mình, hãy đảm bảo bạn sử dụng một debugclient như đi kèm với Xdebug 1.3 dưới dạng gói đi kèm với Xdebug 2 chỉ hoạt động với bộ lệnh DBGp. Khi debugclient bắt đầu nó sẽ hiển thị các thông tin sau và sau đó chờ đợi cho đến khi một kết nối được khởi xướng bởi các máy chủ debug:

Xdebug Simple DBGp client (0.10.0) 
Copyright 2002-2007 by Derick Rethans. 
- libedit support: enabled 
Waiting for debug server to connect. 

Sau một nối được thực hiện đầu ra của máy chủ debug được hiển thị:

Connect 
<?xml version="1.0" encoding="iso-8859-1"?> 
<init xmlns="urn:debugger_protocol_v1" 
     xmlns:xdebug="http://xdebug.org/dbgp/xdebug" 
     fileuri="file:///home/httpd/www.xdebug.org/html/docs/index.php" 
     language="PHP" 
     protocol_version="1.0" 
     appid="13202" 
     idekey="derick"> 
    <engine version="2.0.0RC4-dev"><![CDATA[Xdebug]]></engine> 
    <author><![CDATA[Derick Rethans]]></author> 
    <url><![CDATA[http://xdebug.org]]></url> 
    <copyright><![CDATA[Copyright (c) 2002-2007 by Derick Rethans]]></copyright> 
</init> 
(cmd) 

Bạn có thể tìm thêm thông tin về Xdebug 2 khởi tạo giao thức here.
Tham chiếu thêm: Howto check xdebug installation.
Rất tiếc, tiện ích gỡ lỗi chỉ được cung cấp ở dạng nguồn, vì vậy bạn phải tự mình xây dựng tệp thi hành; điều này có thể được thực hiện trên Linux (xem INSTALL) và Windows (với Visual Studio - xem debugclient.dsp).
XAMPP bao gồm phiên bản được biên dịch trong xampp/php/debugclient.exe.

5

người dùng Windows vô hiệu hóa tường lửa của bạn và sau đó thử lại. Nếu nó hoạt động, cho phép Java (TM) Platform SE nhị phân thông qua tường lửa rồi bật lại. Nó sẽ hoạt động tốt!

Cảm ơn bạn đã thực hiện các lệnh, chúng rất hữu ích khi gỡ lỗi.