Jika Anda menggunakan PHP atau menemukan diri Anda "mengadopsi" aplikasi PHP (seperti yang saya lakukan beberapa tahun yang lalu), Anda harus tahu cara men-debug PHP Show Dalam panduan mendetail untuk proses debug PHP ini, Anda akan melihat beberapa teknik proses debug yang berlaku untuk hampir semua bahasa pemrograman. Tapi jangan khawatir. Saya akan membahas secara spesifik yang berlaku untuk PHP, dari dasar hingga teknik debugging yang terintegrasi penuh. Mari kita mulai dengan teknik dasar dalam debugging PHP. nilai output dan logging Tip. Temukan kesalahan aplikasi dan masalah kinerja secara instan dengan Stackify Retrace Pemecahan masalah dan pengoptimalan kode Anda mudah dilakukan dengan kesalahan terintegrasi, log, dan wawasan kinerja tingkat kode Mengeluarkan nilaiSaat Anda membutuhkan cara sederhana untuk men-debug program dan Anda tidak memiliki pilihan lain, Anda biasanya dapat menampilkan nilai. Terkadang ini berarti melakukan var_dump atau mencatat seluruh rangkaian acara Ini berguna untuk memiliki debug logging di program Anda. Di PHP, Anda dapat menggunakan berbagai penebang untuk mencatat pesan debug. Saat program dijalankan dalam mode debug atau level log disetel ke debug, pesan ini akan berakhir di file stdout, stderr, atau log Anda. Log akan terisi cukup cepat dalam "mode debug", jadi Anda hanya ingin mengaktifkannya untuk sementara. Tapi saya terlalu terburu-buru di sini. Izinkan saya mencadangkan ke beberapa cara sederhana untuk menampilkan nilai Membuang variabel ke stdoutFungsi var_dump adalah salah satu cara untuk melihat apa yang terjadi di program PHP Anda. Itu akan membuang nilai variabel ke stdout. Ada fungsi lain yang dapat Anda gunakan untuk men-debug melalui keluaran. Berikut adalah beberapa dan bagaimana mereka akan membantu Anda
Berikut contoh kode yang menjalankan masing-masing fungsi debugging yang berguna ini
Fungsi-fungsi ini adalah cara cepat untuk men-debug kode PHP Anda. Anda bisa melihat mereka beraksi di Paiza ini. Setiap fungsi memiliki tujuan dan dapat berguna untuk debugging Mengalihkan tingkat pelaporan kesalahanPHP memiliki beberapa cara untuk mengonfigurasi pelaporan kesalahan. Anda dapat menggunakan php. ini, jika Anda memiliki akses ke sana. Jika tidak, Anda dapat menggunakan konfigurasi htaccess. Jika Anda tidak dapat menggunakan file konfigurasi, Anda memiliki opsi untuk mengubah nilainya melalui skrip. Ini mungkin, tetapi pikirkan tentang bagaimana Anda akan mengubah mode setelah men-deploy aplikasi Anda Kombinasi pengaturan akan memberi Anda tingkat pencatatan kesalahan yang tepat. Anda akan ingin mempertimbangkan pengaturan berikut
Merinci pengaturan ini secara lebih rinci dan memberikan lebih banyak informasi yang dapat saya muat di bagian ini. Tetapi bahkan dengan pengaturan logging terbaik, Anda masih perlu memantau kesalahan Memantau log kesalahanMencatat kesalahan adalah satu hal—itu hampir pasti. Ini adalah hal lain untuk mengambil tindakan ketika kesalahan dicatat. Pertama, Anda harus mengetahui tentang error tersebut. Kecuali jika Anda memiliki siang dan malam untuk mengarahkan kursor ke log, Anda tidak akan tahu kapan sesuatu yang buruk terjadi Hal terbaik yang dapat Anda lakukan adalah mengirimkan log PHP Anda ke layanan yang akan menangani beberapa hal penting untuk Anda
Anda dapat mengonfigurasi banyak utilitas logging PHP untuk bekerja dengan Stackify Retrace dengan mengikuti panduan ini. Retrace bekerja dengan PHP, dan melakukan semua hal ini untuk Anda. Plus, itu secara otomatis mengumpulkan jejak ringan — dan hanya pada saat yang seharusnya Tentu, Lacak Ulang adalah alat yang hebat untuk mendeteksi bug. Tapi begitu Anda mendeteksinya, perbaiki. Seringkali itu berarti memasang debugger. Mari kita bahas selanjutnya Melangkah melalui kodeSekarang kita akan berbicara tentang debugging dengan menelusuri kode. Inilah yang dipikirkan oleh banyak dari kita para pengembang ketika kita melihat “debugging. ” Ini adalah cara umum untuk men-debug kode (menghapus cacat yang menyebabkan kesalahan). Dengan aplikasi web atau situs web, proses debug sering kali terdiri dari dua cabang Setelah diberi tahu tentang kesalahan yang dicatat, kami dapat melakukan debug jika diperlukan. Dengan detail yang cukup di log, ini seharusnya mudah. Kami bahkan mungkin tidak perlu menggunakan debugger. Seringkali, semakin sedikit yang digunakan, semakin baik. Tetapi jika Anda melakukannya, inilah cara mengatasinya Alat debug PHPAnda dapat men-debug PHP menggunakan salah satu dari banyak alat debug untuk melampirkan klien debugger. PhpStorm berfungsi dengan utilitas debug seperti Xdebug dan ZendDebugger Menjadi poliglot, saya memerlukan IDE yang mendukung banyak bahasa, jadi saya memilih VS Code belakangan ini. Saya telah menggunakan Xdebug dengan Visual Studio di masa lalu, jadi mari kita lihat bagaimana kita dapat mengaturnya dengan VS Code Penyiapan server debug sama, tetapi setiap klien (IDE atau CLI) akan memiliki penyiapan yang sedikit berbeda. Lihat, server debug (ekstensi Zend) membuka port, dan klien berkomunikasi dengan server melalui port tersebut. Ini hanya masalah konfigurasi dan pemasangan komponen yang tepat Inilah langkah-langkah yang saya ambil dalam perjalanan ini
_Saya mencari versi PHP, versi kompiler, arsitektur, dan Pembuatan Ekstensi PHP sehingga saya dapat mengunduh versi yang benar. Saya memiliki x86, VC14, NTS (Non-thread-safe). Versi ini hadir dengan WordPress untuk IIS. Saya sedang mengerjakan mesin Windows. Jika Anda menggunakan Linux, Anda tidak akan menghadapi masalah yang sama… cukup kompilasi kode sumber untuk Xdebug
Ini akan menyiapkan server PHP untuk menggunakan XDebug. Langkah-langkah di sini sama apa pun IDE yang Anda gunakan. Xdebug membuka port HTTP sehingga debugger Anda dapat dilampirkan. Klien masih perlu dikonfigurasi untuk melampirkan dan menggunakan protokol debugging. Saya akan menjalankan bagian itu sekarang
Mengonfigurasi IDE AndaSetelah memasang Xdebug, Anda masih perlu mengonfigurasi IDE untuk dipasang ke debugger. Dalam VS Code, ini berarti menambahkan konfigurasi debug. Untungnya, ini otomatis pada saat ini. Itu hanya beberapa langkah sederhana
Ini akan menempatkan IDE kita dalam keadaan siap untuk dilampirkan ke Xdebug. Komunikasi dengan debugger terjadi melalui port TCP di server debug. Xdebug menggunakan protokol DBGp melalui port 9000 secara default Sekarang kita sudah dikonfigurasi, mari kita lihat mekanisme sesi debug. Selanjutnya, kita akan membahas cara masuk ke sesi debug, cara menyetel breakpoint, dan cara menelusuri, masuk, dan melewati fungsi. Itu bagian terbaiknya Melampirkan dan melangkah ke debuggingDan sekarang, saat yang Anda tunggu-tunggu. debug bertahap. Kami telah mengonfigurasi lingkungan kami untuk debugging. Kami telah memasang ekstensi debug (khususnya Xdebug), dan kami telah mengonfigurasi IDE kami (Kode VS, dalam kasus saya). Sekarang saatnya melampirkan ke debugger Memasang debuggerEkstensi PHP Debug untuk VS Code menghasilkan peluncuran. file json. File itu masuk ke a. direktori vscode di root proyek. Inilah yang dihasilkannya
Itu menambahkan dua konfigurasi peluncuran. Itu tersedia dalam tampilan debug. Kami dapat melampirkan ke server yang sedang berjalan atau meluncurkan yang baru dengan skrip saat ini. Karena saya sudah menjalankan phpinfo, saya akan mulai dari sana dengan memilih Listen for XDebug untuk dilampirkan ke server itu Setelah terpasang, Anda akan melihat toolbar debug Sebagian besar debugger memiliki mekanisme kontrol yang serupa. Ini memungkinkan Anda untuk memulai, menghentikan, melangkah, dan memulai ulang debugger Anda. Karena kami melihat ikon berhenti dan jeda, kami terpasang dan siap, jadi mari melangkah Melangkah melalui kodeMelangkah melalui kode adalah seni sekaligus sains. Hal pertama yang perlu Anda lakukan adalah mengatur breakpoint di mana Anda merasa memiliki masalah. Saya biasanya akan memasukkan satu sebelum sehingga saya bisa melihat apa yang terjadi saat kita masuk ke kode masalah. Mari atur satu di skrip phpinfo hanya untuk membuat semuanya berjalan Mengatur breakpointBiasanya, mengklik margin kiri akan menetapkan breakpoint pada baris terdekat. Anda juga dapat mengatur kursor pada garis dan menekan F9. Jika Anda memiliki beberapa panggilan fungsi di jalur yang sama, itu adalah cara untuk memastikan breakpoint berada di jalur yang benar. Titik merah akan muncul di margin kiri. Ini menunjukkan titik henti. Itu juga harus dicantumkan dalam komponen "breakpoints". Ini gambar untuk memperjelas Catatan. kami masih dalam tampilan Debug. Saya menetapkan satu breakpoint. Sekarang, saat saya mengeklik kanan lingkaran breakpoint merah di margin di samping kode, Anda dapat memilih Edit breakpoint… untuk menyiapkan ketentuan jika perlu. Ketentuan berguna, terutama jika Anda memiliki seluruh koleksi tetapi hanya satu elemen yang menyebabkan masalah. Saya menggunakan kondisional sepanjang waktu Selain breakpoint bersyarat, Anda memiliki opsi untuk mencatat pesan dan berhenti setelah sejumlah hit. Yang terakhir berguna ketika Anda memiliki kode yang berulang tanpa nilai unik tertentu untuk memicu jeda. Misalnya, Anda mungkin memiliki kode untuk merender komponen dalam kumpulan komponen. Jika komponen ke-13 menyebabkan malapetaka, Anda dapat menyetel jumlah pukulan ke 13. Saya harus menghitung secara manual berkali-kali untuk melihat nilai dalam fitur ini Dengan setidaknya satu titik henti sementara yang ditetapkan, Anda siap menelusuri kode Anda Melangkah melalui kodeMelangkah melalui kode adalah operasi yang kompleks. Ini sederhana untuk dikendalikan, tetapi ada banyak hal yang terjadi. Debugger akan mengevaluasi variabel, Anda dapat mengatur jam tangan pada variabel, dan Anda memiliki akses ke tumpukan panggilan. Setelah debugger dijeda pada breakpoint (atau dengan menekan tombol jeda secara manual/menekan F6), Anda siap untuk menelusuri kode Gunakan skrip ini untuk mengikuti _Anda dapat melangkah ke fungsi (F11), keluar dari fungsi (Shift + F11), dan melangkahi fungsi (F10). Anda harus terbiasa menggunakan tombol fungsi untuk menjalankan sesi debug; Beberapa bahasa memungkinkan Anda untuk mundur dalam waktu. PHP tidak, tapi tidak apa-apa. Ini adalah bahasa scripting, dan itu akan menyebabkan masalah dengan deklarasi. Mari telusuri skrip ini dengan menggunakan F10 Tempatkan breakpoint pada baris phpinfo. Dengan server PHP Anda melayani halaman dan debugger Anda terpasang, muat ulang halaman web. Jika semuanya berjalan lancar, debugger Anda akan menyala dan berhenti di baris tersebut Selamat. Anda sekarang memiliki sesi debug aktif. Ikuti langkah-langkah ini untuk menelusuri kode
TIP. Debugger browser menggunakan F8 untuk melanjutkan karena F5 sudah dipetakan ke pemuatan ulang halaman. Ketidakcocokan kecil ini dapat membuat Anda tersandung saat beralih di antara alat browser dan IDE Anda Melewatkan satu putaranSangat mudah untuk melewatkan satu putaran. Cukup atur breakpoint melewati loop dan gunakan F5 untuk melompat ke titik itu Seringkali, Anda ingin masuk ke loop setidaknya sekali sebelum melewatinya. Gunakan F11 untuk masuk ke dalamnya. Bungkus loop dalam fungsi sehingga Anda dapat melangkah keluar dengan Shift + F11 dan tidak kalah Ada opsi lain, jika tersedia untuk Anda. Dijalankan ke kursor, dan terdengar seperti apa. Tempatkan kursor Anda di suatu tempat melewati loop dan gunakan opsi ini untuk melompat ke titik itu Debugger akan dijalankan dari posisinya saat ini ke kursor saat saya memilih opsi ini. Perhatikan bahwa sayangnya tidak ada pintasan keyboard untuk itu Memeriksa variabelSalah satu manfaat utama debug adalah Anda dapat memeriksa variabel saat menelusuri kode. Sebagian besar IDE menyertakan cara untuk memeriksa variabel lokal dan global. Selain itu, Anda dapat menonton variabel sehingga Anda tidak perlu memburunya di Locals atau Superglobals Anda juga dapat menonton ekspresi. Ini bagus ketika Anda ingin melihat bagaimana ekspresi kompleks di dalam pernyataan if akan dievaluasi. Cukup salin ekspresi ke jam tangan dan Anda dapat melacak hasilnya saat nilainya berubah Saya telah menambahkan ekspresi jam tangan berikut. $jalur == “bla”. Dalam Kode VS, Anda dapat menyorot ekspresi dalam kode dan membuka menu konteks untuk melihat ekspresi Saya telah menyorot $i < 100 untuk menambahkannya ke ekspresi jam tangan saya. Anda juga dapat mengevaluasi ekspresi apa pun di konsol debug Mengevaluasi di konsol debugAnda juga dapat mengevaluasi ekspresi di konsol debug. Jika Anda perlu memeriksa sesuatu sekali, lebih baik mengevaluasinya di konsol Buka konsol debug dan masukkan ekspresi Anda juga dapat memeriksa menu konteks untuk opsi mengevaluasi ekspresi yang dipilih. Berikut adalah hal-hal yang dapat Anda lakukan di konsol debug
Ini sering berguna untuk debugging Membungkus barangKami telah membahas banyak hal di pos ini. Ini cukup untuk membantu Anda memulai dengan debugging PHP. Ini adalah topik yang sangat mendalam, tetapi cara terbaik untuk belajar adalah dengan melakukan. Berlatih debug sampai Anda menguasai tekniknya, dan Anda akan mendapatkan reputasi sebagai pembasmi bug yang luar biasa Bagaimana saya bisa men-debug kode PHP?Untuk memulai proses debug, tekan F5. Buka Chrome dan buka index. file php. Klik ekstensi XDebug Helper baru dan klik opsi Debug .
Bagaimana cara menggunakan konsol PHP di Chrome?Untuk memulai, buka Google Chrome dan buka halaman web mana saja, klik kanan dan pilih Periksa untuk membuka Alat Pengembang Chrome. Konsol browser akan menjadi salah satu tab di Alat Pengembang. Dan Anda dapat mengujinya dengan menulis konsol JavaScript yang sama. perintah log
Apakah ada debugger PHP?PHP dikirimkan dengan debugger interaktif phpdbg . Debugger eksternal juga dapat digunakan. Itu » Zend IDE menyertakan debugger, dan ada juga beberapa ekstensi debugger gratis seperti DBG di » http. // www. php-debugger. com/dbg/, the » Advanced PHP Debugger (APD) atau » Xdebug.
Bagaimana cara men-debug PHP secara lokal?Pertama Anda perlu membuka PhpStorm dan pilih Run > Edit Configuration. Di sana Anda harus memilih + (Tambahkan konfigurasi baru) dan pilih "PHP Remote Debug". . Ubah nama Server Anda menjadi sesuatu yang lebih menenangkan. . Di kolom Host, ketikkan localhost Anda |