Bisakah Xdebug dipicu oleh perintah Drush?

9

Saya mengalami masalah dengan modul Fitur dan profil pemasangan saat memasang situs drush si. Ada beberapa masalah yang mungkin terkait dalam antrian masalah Fitur, tetapi tidak ada yang memiliki solusi yang baik. Bagian yang menarik (disebutkan dalam beberapa masalah) adalah berfungsi dengan baik ketika menginstal situs melalui browser, tetapi gagal ketika menginstal dengan drush si.

Saya punya ide tentang apa yang salah, tetapi perlu mengkonfirmasinya. Satu-satunya cara yang dapat saya pikirkan untuk mengonfirmasinya adalah dengan melangkah melalui kode dengan debugger (Xdebug adalah apa yang telah saya atur). Jadi, apakah mungkin untuk memicu Xdebug dari perintah yang dijalankan dengan Drush? Secara khusus, bisakah saya mendapatkan Xdebug untuk menendang ketika saya berlari drush si?

Chaulky
sumber

Jawaban:

4

Anda harus ingat bahwa dengan mabuk Anda (diduga) berada di cli, jadi ini akan membantu:

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

juga, coba jalankan perintah dengan opsi -d (--debug) - itu akan memberi Anda cukup banyak info tentang apa yang salah.

mojzis
sumber
Bisakah Anda menambahkan beberapa informasi tentang pengaturan break point dalam kode Drush / Drupal-spesifik? yaitu nomor baris dalam file yang akan dihancurkan oleh debugger jika drush dijalankan?
therobyouknow
Sebuah jawaban untuk pertanyaan saya tampaknya ada di sini: randyfay.com/content/… : - "jika Anda men-debug sebagian besar tindakan drush, Anda bisa meletakkan breakpoint pada baris pertama drupal_bootstrap () di include / bootstrap.inc."
therobyouknow
3

Anda dapat menggunakan xdebug_start_trace()dan xdebug_stop_trace()fungsi XDebug untuk memulai debugger sesuai permintaan. Pastikan Anda telah mengkonfigurasi XDebug di CLI terlebih dahulu ( php -i | grep xdebug).

Kemudian buat file PHP satu baris baru sebagai berikut (mis. Drush_xdebug_start.inc):

<?php xdebug_start_trace();

Kemudian jalankan drush sebagai:

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

Saya menggunakan XDebug pada permintaan drush sepanjang waktu.

  1. Pastikan XDebug dimuat di CLI php Anda dengan menjalankan php -i
  2. Pastikan klien Anda mendengarkan koneksi XDebug, dan melakukannya di port yang tepat. Saya telah berhasil men-debug menggunakan PHPStorm, Netbeans, dan IDE Komodo sebagai klien.
Moshe Weitzman
sumber
1
Bisakah Anda memberikan contoh di mana (di dalam drush sendiri atau dalam bagian lain dari kode Drupal yang memanggil drushal) sebuah breakpoint akan ditetapkan sehingga xdebug merusak baris kode ini ketika drush dijalankan?
therobyouknow
Sebuah jawaban untuk pertanyaan saya tampaknya ada di sini: randyfay.com/content/… : - "jika Anda men-debug sebagian besar tindakan drush, Anda bisa meletakkan breakpoint pada baris pertama drupal_bootstrap () di include / bootstrap.inc."
therobyouknow
1

Dengan asumsi Anda telah mengkonfigurasi Xdebug dengan benar, sangat mudah untuk mengintegrasikan IDE Anda untuk melangkah melalui kode. Cukup atur variabel lingkungan XDEBUG_CONFIG ke "idekey = MYIDEKEY".

Buat lebih mudah dengan mengatur alias untuknya. inilah yang saya gunakan dalam file .alias saya (tcsh):

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
Harry Slaughter
sumber