Menyahpepijat PHP dengan Xdebug

Xdebug ialah alat penyahpepijatan dan pemprofilan PHP yang berkuasa yang membantu kami menganalisis dan mengoptimumkan aplikasi PHP. Ia menyokong ciri seperti penyahpepijatan langkah demi langkah, pengukuran prestasi dan pengesanan tindanan, yang menjadikan penyelesaian masalah lebih mudah dan memberikan cerapan yang lebih baik tentang kod tersebut. Di bawah ialah panduan persediaan kecil untuk digunakan dalam VSCode.


Pasang Xdebug

Sebagai contoh, kami memasang Xdebug pada sistem Ubuntu semasa:

sudo apt-get install -y php8.4-xdebug

Akhir sekali, kami mencipta direktori sementara untuk penyimpanan data profil dan pengesanan kemudian:

mkdir -p /tmp/xdebug

Konfigurasikan Xdebug

Selepas pemasangan, kami mengkonfigurasi Xdebug. Untuk melakukan ini, kami mengeditnya ms/php.ini:

vi /etc/php/8.4/fpm/conf.d/custom.ini

Apa yang berikut ialah konfigurasi asas yang wajar:

[xdebug]
; mode (see: https://xdebug.org/docs/all_settings#mode)
;   reasonable default
xdebug.mode=debug,profile
;   disabled
;xdebug.mode=off
;   step debugging
;xdebug.mode=debug
;   performance profiling (be aware of load/space)
;xdebug.mode=profile
;   trace profiling (record args)
;xdebug.mode=trace

; starting mode
;   always (not recommended)
;xdebug.start_with_request=yes
;   only when specific get parameters / cookies are set
;   (?XDEBUG_TRIGGER=1, ?XDEBUG_PROFILE=1, ?XDEBUG_TRACE=1, ?XDEBUG_SESSION=1)
;   this is best in conjunction with Chrome extension "Xdebug helper"
xdebug.start_with_request=trigger
;   folder for analyzing profile dumps
xdebug.output_dir="/tmp/xdebug"
;   not needed, since it is already in /etc/php/8.4/fpm/conf.d/20-xdebug.ini
;zend_extension=xdebug.so

Selepas membuat pelarasan ini, kami memulakan semula PHP-FPM untuk menggunakan perubahan:

sudo service php8.4-fpm restart

Konfigurasikan VSCode

Untuk menggunakan Xdebug dalam Kod Visual Studio, dua sambungan dan pelarasan konfigurasi diperlukan. Kami memasang ini:

Akhir sekali, kami mencipta fail konfigurasi launch.json dalam folder .vscode projek untuk dianalisis:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "ignore": ["**/vendor/**/*.php"]
        }
    ]
}

Pasang Sambungan Chrome

Sambungan pembantu Xdebug telah membuktikan dirinya untuk penyahpepijatan fleksibel dalam penyemak imbas. Ini membolehkan untuk mendayakan atau melumpuhkan Xdebug hanya apabila perlu. Anda juga boleh menukar mod nyahpepijat dengan mudah (contohnya, untuk beralih daripada penyahpepijatan kepada pemprofilan):

Konfigurasikan WordPress

Apabila menggunakan Xdebug dalam persekitaran WordPress, mungkin berguna untuk melumpuhkan penyahpepijatan dalam tugas cron apabila sesi penyahpepijatan aktif. Ini menjadikan permintaan penyahpepijatan lebih mudah. Untuk melakukan ini, tambahkan baris berikut kepada: wp-config.php a:

// disable wp cron on xdebug sessions
if (function_exists('xdebug_is_debugger_active') && xdebug_is_debugger_active()) {
    define('DISABLE_WP_CRON', true);
}

Dengan konfigurasi ini, kami mempunyai persediaan berkuasa yang membolehkan kami menangani masalah penyahpepijatan yang kompleks dengan ketepatan. Sama ada mencari pepijat degil atau memperhalusi masalah prestasi - Xdebug bukan sahaja menjadikan kerja lebih cekap, tetapi juga membawa kualiti baharu kepada pembangunan melalui kawalan dan kejelasan ke atas kod.

Belakang