Xdebug có thể được kích hoạt bằng các lệnh Drush không?


9

Tôi đang gặp vấn đề với các mô-đun Tính năng và hồ sơ cài đặt khi cài đặt trang web drush si. Có một số vấn đề có thể liên quan trong hàng đợi vấn đề Tính năng, nhưng không có vấn đề nào có giải pháp tốt. Phần thú vị (được đề cập trong một số vấn đề) là nó hoạt động tốt khi cài đặt trang thông qua trình duyệt, nhưng không thành công khi cài đặt drush si.

Tôi có một ý tưởng về những gì sai, nhưng cần phải xác nhận nó. Cách duy nhất tôi có thể nghĩ đến khi xác nhận nó là bước qua mã với trình gỡ lỗi (Xdebug là những gì tôi đã thiết lập). Vì vậy, có thể kích hoạt Xdebug từ một lệnh chạy với Drush không? Cụ thể, tôi có thể khiến Xdebug đá vào khi tôi chạy drush sikhông?

Câu trả lời:


4

bạn phải nhớ rằng với drush, bạn (được cho là) ​​trong cli, vì vậy điều này sẽ giúp:

/programming/1947395/how-can-i-debug-a-php-cli-script-with-xdebug

Ngoài ra, hãy thử chạy lệnh với tùy chọn -d (--debug) - nó sẽ cung cấp cho bạn khá nhiều thông tin về những gì đang xảy ra.


Bạn có thể thêm một số thông tin về việc đặt điểm dừng trong mã dành riêng cho Drush / Drupal không? tức là một số dòng trong một tệp mà trình gỡ lỗi sẽ phá vỡ nếu drush được chạy?
trị liệu

Một câu trả lời cho câu hỏi của tôi dường như là ở đây: randyfay.com/content/... : - "nếu bạn đang tháo gỡ hầu hết các hành động drush, bạn có thể đặt một breakpoint trên dòng đầu tiên của drupal_bootstrap () trong includes / bootstrap.inc."
trị liệu

3

Bạn có thể sử dụng xdebug_start_trace()và các xdebug_stop_trace()hàm XDebug để khởi động trình gỡ lỗi theo yêu cầu. Đảm bảo rằng bạn đã định cấu hình XDebug trong CLI trước ( php -i | grep xdebug).

Sau đó tạo tệp PHP một lớp mới như sau (ví dụ: drush_xdebug_start.inc):

<?php xdebug_start_trace();

Sau đó chạy drush như:

drush --early="$PWD"/drush_xdebug_start.inc whatever_command_you_need

2

Tôi sử dụng XDebug trên các yêu cầu drush mọi lúc.

  1. Đảm bảo XDebug được tải trong CLI php của bạn bằng cách chạy php -i
  2. Đảm bảo rằng máy khách của bạn đang lắng nghe các kết nối XDebug và đang thực hiện trên cổng bên phải. Tôi đã gỡ lỗi thành công khi sử dụng PHPStorm, Netbeans và Komodo IDE làm khách hàng.

1
Bạn có thể đưa ra một ví dụ về nơi (trong chính drush hoặc trong một đoạn mã Drupal khác gọi drush) một điểm dừng sẽ được đặt để xdebug phá vỡ dòng mã này khi chạy drush không?
trị liệu

Một câu trả lời cho câu hỏi của tôi dường như là ở đây: randyfay.com/content/... : - "nếu bạn đang tháo gỡ hầu hết các hành động drush, bạn có thể đặt một breakpoint trên dòng đầu tiên của drupal_bootstrap () trong includes / bootstrap.inc."
trị liệu

1

Giả sử bạn đã cấu hình Xdebug đúng cách, việc tích hợp IDE của bạn để thực hiện mã là rất dễ dàng. Chỉ cần đặt biến môi trường XDEBUG_CONFIG thành "idekey = MYIDEKEY".

Làm cho nó dễ dàng hơn bằng cách thiết lập một bí danh cho nó. đây là những gì tôi sử dụng trong tệp .alias của mình (tcsh):

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.