Jika Anda menemukan ekstensi ini berguna, jika membantu Anda menyelesaikan masalah Anda dan jika Anda menghargai dukungan yang diberikan di sini, pertimbangkan untuk mensponsori pekerjaan kami.
Pasang ekstensi: Tekan F1
, ketik ext install php-debug
.
Ekstensi ini adalah adaptor debug antara VS Code dan XDebug oleh Derick Rethans. XDEBUG adalah ekstensi PHP (file .so
di Linux dan .dll
pada windows) yang perlu diinstal di server Anda.
Instal xDebug Saya sangat menyarankan Anda membuat file test.php
sederhana, letakkan phpinfo();
Pernyataan di sana, lalu salin output dan tempel ke Wizard Instalasi XDebug. Ini akan menganalisisnya dan memberi Anda instruksi pemasangan yang disesuaikan untuk lingkungan Anda. Pendeknya:
Di Windows: Unduh DLL yang telah dikompilasi sesuai untuk versi PHP Anda, Arsitektur (64/32 bit), keselamatan utas (TS/NTS) dan Versi Visual Studio Compiler Version dan letakkan di folder ekstensi PHP Anda.
Di Linux: Unduh kode sumber sebagai tarball atau klon dengan git, lalu kompilasi. Atau lihat apakah distribusi Anda sudah menawarkan paket prebuilt.
Konfigurasikan PHP untuk menggunakan xDebug dengan menambahkan zend_extension=path/to/xdebug
ke php.ini Anda. Jalur php.ini Anda ditampilkan di output phpinfo()
Anda di bawah "file konfigurasi yang dimuat".
Aktifkan debugging jarak jauh di php.ini
Anda:
Untuk xdebug v3.xx:
xdebug.mode = debugxdebug.start_with_request = ya
Untuk xdebug v2.xx:
xdebug.remote_enable = 1xdebug.remote_autostart = 1xdebug.remote_port = 9000
Ada cara lain untuk memberi tahu XDebug agar terhubung ke debugger jarak jauh, seperti cookie, parameter kueri atau ekstensi browser. Saya merekomendasikan remote_autostart
(xDebug V2)/ start_with_request
(xdebug v3) karena "hanya berfungsi". Ada juga berbagai opsi lain, seperti port, silakan lihat dokumentasi XDEBUG tentang debugging jarak jauh untuk informasi lebih lanjut. Harap dicatat bahwa port XDebug default berubah antara XDebug V2 ke V3 dari 9000 menjadi 9003.
Jika Anda melakukan pengembangan web, jangan lupa untuk memulai kembali server web Anda untuk memuat ulang pengaturan.
Verifikasi instalasi Anda dengan memeriksa output phpinfo()
Anda untuk bagian xDebug.
Dalam proyek Anda, buka debugger dan tekan ikon Little Gear dan pilih PHP . Konfigurasi peluncuran baru akan dibuat untuk Anda dengan tiga konfigurasi:
Dengarkan XDEBUG Pengaturan ini hanya akan mulai mendengarkan di port yang ditentukan (secara default 9003) untuk XDEBUG. Jika Anda mengonfigurasi xDebug seperti yang disarankan di atas, setiap kali Anda membuat permintaan dengan browser ke server web Anda atau meluncurkan skrip CLI XDEBUG akan terhubung dan Anda dapat berhenti di breakpoint, pengecualian dll.
Peluncuran saat ini terbuka skrip pengaturan ini adalah contoh debugging CLI. Ini akan meluncurkan skrip yang saat ini dibuka sebagai CLI, tunjukkan semua output stdout/stderr di konsol debug dan mengakhiri sesi debug setelah skrip keluar.
Luncurkan server web bawaan konfigurasi ini memulai server web built-in php pada port acak dan membuka browser dengan directive serverReadyAction
. Portnya acak (localhost: 0) tetapi dapat diubah menjadi port tetap yang diinginkan (mis: localhost: 8080). Jika skrip router diperlukan, tambahkan dengan Petunjuk program
. Arahan PHP/XDEBUG tambahan memicu debugging pada setiap beban halaman.
Ada juga konfigurasi untuk instalasi XDEBUG V2 (Legacy).
Informasi yang lebih umum tentang debugging dengan kode VS dapat ditemukan di https://code.visualstudio.com/docs/editor/debugging.
Catatan: Anda bahkan dapat men -debug skrip tanpa
launch.json
. Jika tidak ada folder yang terbuka, dan bilah status kode VS adalah ungu, tekanF5
akan memulai skrip terbuka dengan parameter spesifik XDEBUG3. Jika PHP Executable tidak ada di jalur, Anda dapat menyediakannya dengan pengaturanphp.debug.executablePath
. Agar debugging bekerja, XDebug masih harus diinstal dengan benar.
request
: Selalu "launch"
hostname
: Alamat yang harus diikat saat mendengarkan xDebug (default: semua koneksi IPv6 jika tersedia, selain itu semua koneksi IPv4) atau soket domain unix (awalan dengan unix://
) atau pipa windows ( ?pipename
) - tidak dapat digabungkan dengan pelabuhan
port
: Port untuk mendengarkan XDebug (default: 9003
). Jika port diatur ke 0
port acak dipilih oleh sistem dan placeholder ${port}
diganti dengan port yang dipilih di env
dan runtimeArgs
.
stopOnEntry
: Apakah akan pecah di awal skrip (default: false
)
pathMappings
: Daftar pemetaan jalur server ke jalur sumber lokal di mesin Anda, lihat "Debugging Host Jarak Jauh" di bawah ini
log
: Apakah akan mencatat semua komunikasi antara VS Code dan adaptor ke konsol debug. Lihat pemecahan masalah lebih jauh ke bawah.
ignore
: Array opsional dari pola glob yang harus diabaikan dari (misalnya **/vendor/**/*.php
)
ignoreExceptions
: Array opsional nama kelas pengecualian yang harus diabaikan (misalnya BaseException
, NS1Exception
, *Exception
atau **Exception*
)
skipFiles
: Sejumlah pola glob, untuk melewatkan saat men -debug. Pola dan negasi bintang diperbolehkan, misalnya, **/vendor/**
atau !**/vendor/my-module/**
.
skipEntryPaths
: Sejumlah pola Glob, untuk segera melepaskan diri dan mengabaikan debugging jika skrip entri cocok (contoh **/ajax.php
).
maxConnections
: Hanya menerima jumlah sesi debugging paralel ini. Koneksi tambahan akan dibatalkan dan eksekusi mereka akan berlanjut tanpa debugging.
proxy
: Pengaturan Proxy DBGP
enable
: Untuk mengaktifkan pendaftaran proxy yang diatur ke true
(default adalah `false).
host
: Alamat proxy. Mendukung nama host, alamat IP, atau soket domain UNIX (default: 127.0.0.1).
port
: Port tempat adaptor akan mendaftar dengan proxy (default: 9001
).
key
: Kunci unik yang memungkinkan proxy mencocokkan permintaan dengan editor Anda (default: vsc
). Default diambil dari pengaturan vScode php.debug.idekey
.
timeout
: Jumlah milidetik yang harus menunggu sebelum menyerah pada koneksi ke proxy (default: 3000
).
allowMultipleSessions
: Jika proxy harus meneruskan beberapa sesi/koneksi pada saat yang sama atau tidak (default: true
).
xdebugSettings
: memungkinkan Anda untuk mengganti pengaturan debugging jarak jauh XDEBUG untuk menyempurnakan XDEBUG untuk kebutuhan Anda. Misalnya, Anda dapat bermain dengan max_children
dan max_depth
untuk mengubah jumlah maksimal array dan objek anak -anak yang diambil dan kedalaman maks dalam struktur seperti array dan objek. Ini dapat mempercepat debugger pada mesin lambat. Untuk daftar lengkap nama fitur yang dapat diatur, silakan merujuk ke dokumentasi XDEBUG.
max_children
: Jumlah maksimal array atau anak -anak objek untuk diambil pada awalnya
max_data
: Jumlah MAX Data Variabel untuk Awalnya Mengambil.
max_depth
: Kedalaman maksimum yang dapat dikembalikan oleh mesin debugger saat mengirim array, hash atau struktur objek ke IDE (seharusnya tidak perlu mengubahnya karena kedalaman diambil secara bertahap, nilai besar dapat menyebabkan IDE menggantung).
show_hidden
: Fitur ini dapat ditetapkan oleh IDE jika ingin memiliki informasi internal yang lebih rinci tentang properti (mis. Anggota kelas pribadi, dll.) Nol berarti bahwa anggota tersembunyi tidak ditampilkan ke IDE.
xdebugCloudToken
: Alih -alih mendengarkan secara lokal, buka koneksi dan mendaftar dengan XDebug Cloud dan menerima sesi debugging pada koneksi itu.
stream
: Memungkinkan untuk mempengaruhi aliran DBGP. XDEBUG hanya mendukung stdout
lihat dbgp stdout
stdout
: Redirect Stdout Stream: 0 (Disable), 1 (salin), 2 (Redirect)
Opsi khusus untuk debugging CLI:
program
: Jalur ke skrip yang harus diluncurkan
args
: Argumen diteruskan ke naskah
cwd
: Direktori Kerja saat ini untuk digunakan saat meluncurkan skrip
runtimeExecutable
: Path to PHP Binary yang digunakan untuk meluncurkan skrip. Secara default yang ada di jalur.
runtimeArgs
: Argumen tambahan untuk diteruskan ke biner PHP
externalConsole
: meluncurkan skrip di jendela konsol eksternal alih -alih konsol debug (default: false
)
env
: Variabel lingkungan untuk diteruskan ke skrip
envFile
: Jalur opsional ke file yang berisi definisi variabel lingkungan
Breakpoint garis
Breakpoint bersyarat
Hit Count Breakpoints: Mendukung kondisi seperti >=n
, ==n
dan %n
Fungsi Breakpoints
Melangkah, melangkah, keluar
Break on Entry
Mulailah dengan Stop On Entry (F10/F11)
Melanggar pengecualian dan kesalahan / peringatan / pemberitahuan
Beberapa permintaan paralel
Jejak tumpukan, variabel lingkup, superglobal, konstanta yang ditentukan pengguna
Array & Objek (termasuk ClassName, Private and Static Properties)
Konsol Debug
Jam tangan
Atur variabel
Jalankan sebagai CLI
Jalankan tanpa debugging
Pendaftaran Proksi DBGP dan Dukungan Unregistrasi
Dukungan Cloud XDEBUG
Untuk men -debug aplikasi yang berjalan pada host jarak jauh, Anda perlu memberi tahu XDebug untuk terhubung ke IP yang berbeda dari localhost
. Ini dapat dilakukan dengan mengatur xdebug.client_host
ke IP Anda atau dengan mengatur xdebug.discover_client_host = 1
untuk membuat xdebug selalu terhubung kembali ke mesin yang melakukan permintaan web. Yang terakhir adalah satu -satunya pengaturan yang mendukung beberapa pengguna men -debug server yang sama dan "hanya berfungsi" untuk proyek web. Sekali lagi, silakan lihat dokumentasi XDEBUG tentang subjek untuk informasi lebih lanjut.
Untuk membuat kode VS memetakan file di server ke file yang tepat di mesin lokal Anda, Anda harus mengatur pengaturan pathMappings
di launch.json Anda. Contoh:
// Server -> Lokal "PathMappings": {"/var/www/html": "$ {workspaceFolder}/www", "/app": "$ {workspacefolder}/app"}
Harap perhatikan juga bahwa pengaturan salah satu opsi debugging CLI tidak akan berfungsi dengan debugging host jarak jauh, karena skrip selalu diluncurkan secara lokal. Jika Anda ingin men -debug skrip CLI pada host jarak jauh, Anda harus meluncurkannya secara manual dari baris perintah.
Debugger dapat mendaftarkan diri ke proxy DBGP dengan kunci IDE. Proksi kemudian akan meneruskan ke IDE hanya sesi DBGP yang memiliki kunci IDE yang ditentukan ini. Ini bermanfaat dalam lingkungan multiuser di mana pengembang tidak dapat menggunakan port DBGP yang sama secara bersamaan. Pengaturan yang cermat diperlukan agar permintaan ke server web berisi kunci IDE yang cocok.
Implementasi resmi DBGPPROXY.
Ekstensi browser helper xDebug juga direkomendasikan. Di sana tombol IDE samping permintaan dapat dengan mudah dikonfigurasi.
Ajukan pertanyaan di StackOverflow
Jika Anda pikir Anda menemukan bug, buka masalah
Pastikan Anda memiliki versi terbaru dari ekstensi ini dan XDEBUG terpasang
Cobalah file PHP sederhana untuk membuat ulang masalah, misalnya dari TestProject
Setel "log": true
di Panel Launch.json Anda dan Amati Panel Konsol Debug
Di php.ini Anda, atur xdebug.log = /path/to/logfile
(pastikan server web Anda memiliki izin menulis ke file)
Jangkau di twitter @damjancvetko
Untuk meretas adaptor ini, klon repositori dan buka dalam kode VS. Anda memerlukan nodeJs dengan NPM yang diinstal dan di jalur Anda. Juga PHP dan xDebug baru -baru ini harus diinstal dan di jalur Anda.
Instal Paket NPM dengan menjalankan npm install
pada baris perintah di direktori proyek atau memilih Terminal / Run Task... / npm / npm: install
dalam menu VS Code.
Jalankan proses build / watch baik dengan menjalankan npm run watch
on command line di direktori proyek atau memilih Terminal / Run Build Task...
di menu VS Code.
Mulai adaptor debug dengan membuka bilah samping run dan debug, memilih konfigurasi Debug adapter
dan mengklik panah Green Run (atau memukul F5
). Adaptor yang dikompilasi akan berjalan di "Mode Server" dan mendengarkan di TCP Port 4711.
Jalankan instance terpisah dari kode VS, yang disebut "host pengembangan ekstensi" dengan menjalankan code testproject --extensionDevelopmentPath=.
pada baris perintah di direktori proyek atau memilih konfigurasi Launch Extension
dan debug dan menekan panah run hijau. Pintasan lain adalah menjalankan npm run start
. Anda juga dapat menjalankan Building Insiders VS Code untuk menguji fitur yang lebih baru.
Dalam instance "Extension Development Host" buka .vscode/launch.json
dan uncomment garis konfigurasi debugServer
. Jalankan sesi debug PHP Anda dengan memilih konfigurasi yang diinginkan dan memukul F5
. Sekarang Anda dapat men -debug proyek tes seperti yang ditentukan di atas dan mengatur breakpoint di dalam instance VS Code pertama Anda untuk melangkah melalui kode adaptor.
Lebih lanjut tentang ekstensi pengujian dapat ditemukan di https://code.visualstudio.com/api/working-with-extensions/testing-extension.
Tes ditulis dengan mocha dan dapat dijalankan dengan npm test
atau dari Terminal / Run Task... / npm: test
. Saat Anda mengirimkan PR, tes akan dijalankan di CI di Linux, MacOS dan Windows terhadap beberapa versi PHP dan XDebug.
Sebelum mengirimkan PR juga menjalankan tugas npm run lint
atau Terminal / Run Tasks... / npm: lint
.