2009-12-22 11 views
22

Tôi đã không tìm ra điều này. MỌI mảnh tài liệu tôi đã tìm thấy bao gồm cách sử dụng xdebug để gỡ lỗi các script chạy trong Apache. Tôi cần phải gỡ lỗi một script CLI php.Làm cách nào để gỡ lỗi tập lệnh PHP CLI bằng xdebug?

Ví dụ: làm cách nào để chuyển biến XDEBUG_SESSION_START vào để xdebug khởi động?

Tôi đang cố gắng gỡ lỗi một trình bao CakePHP. Vì vậy, nếu bất cứ ai có bất kỳ thông tin chi tiết bổ sung vào đó tôi sẽ rất đánh giá cao.

Cảm ơn.

+0

Bạn cũng có thể muốn xem xét ở đây: http: // stackoverflow.com/questions/2288612/how-to-trigger-xdebug-cho-a-command-line-php-script – selfawaresoup

Trả lời

36

Có một vài ghi chú về điều đó trong Xdebug's manual, như thế nào, ví dụ (trích dẫn):

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

Nếu bạn đang sử dụng Eclipse PDT để phát triển và gỡ lỗi script PHP của bạn, không có nhiều khác biệt giữa Apache hoặc CLI: cấu hình lloks khá giống nhau, bạn chỉ cần không phải cấu hình một máy chủ web, cũng không chỉ ra một URL; thay vào đó, bạn phải chỉ ra đường dẫn đến tệp thực thi PHP.

Giới thiệu về biến số XDEBUG_SESSION_START: tốt, bạn khởi chạy toàn bộ tập lệnh trong "chế độ gỡ lỗi", vì vậy bạn không có bất kỳ khái niệm nào về "phiên gỡ lỗi", tôi muốn nói.


Ví dụ, đây là những gì Window > Preference > PHP > PHP executables trông giống như đối với tôi ngay bây giờ, và, bên phải, những gì tôi nhận được khi nhấp vào nút Edit của người đầu tiên:

http://extern.pascal-martin.fr/so/xdebug-cli/1.png     http://extern.pascal-martin.fr/so/xdebug-cli/1-edit.png

Và cửa sổ debug configurations:

http://extern.pascal-martin.fr/so/xdebug-cli/2.png

Và tung gỡ lỗi: nó chỉ hoạt động:

http://extern.pascal-martin.fr/so/xdebug-cli/3.png


Hope this helps :-)

khác, những vấn đề cụ thể nào bạn gặp phải?

8

Nếu bạn đang sử dụng bash (hoặc vỏ tương tự), kịch bản này ít có thể có ích:

alias drush-debug=drd 
function drd { 
    export XDEBUG_CONFIG="idekey=cli_session" 
    export SERVER_NAME="developer.machine" 
    export SERVER_PORT="9000" 
    drush "[email protected]" 
    unset XDEBUG_CONFIG 
    unset SERVER_NAME 
    unset SERVER_PORT 
}; 

hoặc theo đề nghị của các nhà bình luận bên dưới

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "[email protected]"' 

Bằng cách này bạn don' t phải đặt thủ công và bỏ đặt biến kích hoạt mỗi khi bạn muốn gỡ lỗi.

+6

Điều này tương đương về mặt logic khi đặt biến môi trường trên cùng một dòng với lệnh trong bash, tức là: "XDEBUG_CONFIG = 'idekey = cli_session' drush $ * ". Không cần một hàm nào được đặt và sau đó bỏ biến, trình bao sẽ tự động xuất biến đó vào lệnh. – Stabledog

+1

@Stabledog Điều này, tuy nhiên, nếu chúng không được bỏ đặt xDebug sẽ được kích hoạt cho tất cả các lệnh drush tiếp theo trong shell hiện tại, nếu tôi không nhầm. Ý tưởng đằng sau chức năng này là tạm thời kích hoạt tính năng gỡ lỗi CLI của PHP, nhưng nó có những điều cần lưu ý. – Plamen

+1

@Plamen sử dụng 'drush" $ @ "' thay thế. bash sẽ mở rộng mỗi đối số bằng dấu ngoặc kép để đăng ký chủ đề 'drush-debug cc" sẽ hoạt động. Nó không phải là khía cạnh trực quan nhất của bash, nhưng nó là tốt đẹp để có. –

2

chỉ cần đặt các phần sau đây để php.ini của bạn

[XDebug] 
xdebug.max_nesting_level = 200 
xdebug.remote_enable=1 
xdebug.remote_port=9000 
;xdebug.profiler_enable=1 
xdebug.idekey=PHPSTORM 
xdebug.remote_autostart=1 

và thay thế PHPSTORM với ide của bạn chính