Bagaimana Anda men-debug plugin?


49

Saya cukup baru dalam pembuatan plugin dan mengalami kesulitan debug.

Saya menggunakan banyak gema dan ceroboh dan jelek.

Saya yakin ada cara yang lebih baik untuk melakukan ini, mungkin sebuah IDE dengan debugger yang saya dapat menjalankan seluruh situs termasuk plugin?


1
Saya belum melihat IDE yang menjalankan WordPress sepenuhnya dalam IDE ... meskipun itu akan luar biasa. Saya men-debug plug-in dengan menjalankan WAMP secara lokal dan kode di Dreamweaver. Jika Anda menetapkan WP_DEBUGfalse, seperti yang disarankan John, maka Anda mendapatkan ide yang cukup bagus tentang apa yang salah, jika ada, dalam skrip Anda. Kemudian Anda dapat mengedit di Dreamweaver, tekan Ctrl + S dan kemudian F5 di browser untuk segera melihat perubahan.
EAMann

1
@EAMann - Pastikan untuk memeriksa PhpEd (untuk Windows) dan PhpStorm + XDEBUG (untuk Mac, Linux dan Windows).
MikeSchinkel

Jawaban:


21

Pergilah ke wp-config.php dan ubah define('WP_DEBUG', false);ke define('WP_DEBUG', true);. Juga, instal plugin Log Deprecated Notices milik Andrew Nacin .


12
Saya akan memeriksa artikel Nacin lainnya juga: andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress
kevtrout

Dengan PHP 5.4+ Anda mungkin akan dibanjiri pemberitahuan E_STRICT. Masukkan inti ini ke folder plugins dan aktifkan untuk menghapus pemberitahuan Ketat, nonaktifkan untuk kembali ke layanan normal Anda.
webaware

12

Jika Anda mendapatkan kesalahan dalam mencetak, maka x-debug adalah ekstensi PHP yang brilian yang menambahkan backtraces modern ke PHP.

Jika Anda mencoba mencari tahu apa yang terjadi di mana tidak ada kesalahan, pendekatan favorit saya adalah mendefinisikan fungsi yang mencatat outputnya ke file. Jadi saya melakukan plog ($ variabel) dan itu muncul di file log yang kemudian bisa saya periksa. Ini sangat berguna ketika Anda mencoba mencari tahu apa yang terjadi sebelum header () dipanggil, atau situasi lain di mana Anda tidak dapat mencetak ke STDOUT.


10

Gunakan xdebug + NetBeans IDE. Ketika sepenuhnya dikonfigurasi - yang mudah dilakukan - Anda dapat mengatur titik istirahat di plugin Anda dan menonton variabel di titik istirahat. Saya pikir ini adalah cara terbaik untuk men-debug plugin atau aplikasi php dalam hal ini.


6

Saya men-debug cara kuno, error_log()ing dan var_dumping. Saya menemukan itu adalah cara yang paling efisien bagi saya, saya memiliki beberapa fungsi pembungkus untuk menangani berbagai jenis data, karena error_logarray dan objek dapat menyusahkan. Juga, menggunakan print_r()dalam bisa sulit untuk dibaca ketika tidak dalam <pre>. Saya memiliki tj_log()untuk logging kesalahan, dan tj()untuk menampilkan output (yang pada dasarnya menunjukkan semua tipe data di mannor rapi:

function tj( $code ) {

    ?>
    <style>
        .tj_debug { word-wrap: break-word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
    </style>
    <br /><pre class="tj_debug">

    <?php
    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        var_dump( $code );

    else :
        print_r( $code );

    endif;

    echo '</pre><br />';

}

function tj_log( $code ) {

    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        $code = var_export( $code, true );

    else :
        $code = print_r( $code, true );

    endif;

    error_log( $code );

}

Jadi saya hanya melakukan: tj( $current_user );atau apa pun.


5

Setelah mengutak-atik sejumlah IDE, saya memilih Notepad ++ biasa dengan skema warna Syntax Highlighting yang sangat disesuaikan.

Saya memiliki pengaturan makro sehingga ketika saya menekan Shift-Ctrl-X, kode berikut mendapatkan output di mana kursor saya:

echo "<pre>";
var_dump($);
echo "</pre>";
exit();

Ini sederhana, tetapi saya biasanya dapat memburu 90% bug saya dengan makro ini ditambah WP_DEBUG diaktifkan.


2
Langkah yang bagus. Tombol cepat keyboard di editor rock!
hakre

1
Saya lebih suka output yang diberikan print_r($var, true)daripada var_dump.
brasofilo

5

Saya menulis sedikit kelas untuk membuat file log, sangat berguna ketika Anda men-debug panggilan ajax.

http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php

Anda hanya perlu melakukan sesuatu seperti:

Debug :: log ("Ini adalah pesan debug");

Ketika baris itu dieksekusi, sebuah pesan akan ditambahkan dalam file log dan setelah itu Anda dapat menggunakan perintah tail (jika Anda menggunakan sistem operasi gaya unix)

tail -f mylogfile.log

Jika Anda bisa meneruskan ke fungsi ini, array atau objek juga.

perhatikan Anda perlu mengubah baris 20 untuk jalur tempat Anda ingin menyimpan file log Anda


3

Saya menggunakan Aptane IDE di Linux dan UltraEdit di Windows, dan yang ini juga memiliki parser PHP. Juga, saya melihat semua petunjuk dari xDebug dengan konstanta yang WP_DEBUGdidefinisikan dalam wp-config.php.

Lihat juga posting saya tentang topik ini dan jangan ragu untuk berkomentar dan memberikan umpan balik tentang alat pengembangan Anda.


2

Saya sarankan memeriksa FirePHP . Anda dapat mengirim info debug ke Firebug Firefox melalui tajuk HTTP, yang biasanya menghasilkan keluaran debug yang lebih bersih.



1

Ada dua IDE yang bisa saya rekomendasikan dan saya telah menggunakan keduanya secara ekstensif: PhpED (hanya Windows) dan PhpStorm + XDEBUG (Mac, Windows dan Linux.) Saya di Mac sekarang jadi hanya dapat menggunakan yang terakhir.

Keduanya ROCK! Kabar baiknya bahwa PhpStorm adalah $ 49 sebelum September 2010 dan hanya $ 99 setelah itu. Jika saya menggunakan Windows dan harus memilih lagi, tidak yakin mana yang akan saya pilih.

Terus terang saya merasa bahwa pengembang plugin yang tidak menggunakan salah satu dari dua alat ini cacat parah, terutama jika mereka relatif baru dalam mengembangkan plugin WordPress.


1

Krumo - kelas debug debug gaya

Hal lain yang sangat menyenangkan adalah kelas php "krumo". Ini diterapkan dalam ½ menit dan menawarkan cara mudah untuk men-debug semua jenis variabel:

  • benda,
  • array,
  • string / float / integer / dll.

Plus itu membantu dengan backtracing, menampilkan kelas yang dimuat atau file yang disertakan dan segala sesuatu sesuai permintaan.

Plus GRATIS!

Unduh

Krumo @sourceforge


0

Saya menggunakan plugin $ 13 yang disebut LogPress yang dapat Anda beli di ThemeForest dan ini adalah pengiriman yang mutlak dari Tuhan. Anda dapat men-debug semua yang berkaitan dengan plugin dan situs mereka. Mendukung logging konsol Firebug dan banyak lagi. Saya tidak bisa hidup tanpanya, saya menggunakan plugin ini.

Plugin ini mungkin adalah uang terbaik yang pernah saya habiskan dan telah menghemat banyak waktu dalam pengembangan plugin Wordpress saya.


Wow, saya downvoted karena merekomendasikan plugin berbayar yang saya tidak punya kaitan dengan apa pun? Itu bukan tangan yang berat bukan?
Dwayne Charrington

Saya bukan yang memilih, tapi saya tidak terkejut. Anda menggunakan kata-kata seolah-olah Anda mencoba menjual plugin. Merekomendasikan hal-hal baik-baik saja, tetapi mendorong penjualan keras seperti "mengirim Tuhan mutlak". Orang membenci iklan. Hanya nada bahasa dan rekomendasi akan berbicara sendiri.
icc97

0

Saya menggunakan phpED dan xdebug tetapi bagi saya (dan tampaknya untuk orang lain) tidak mungkin untuk men-debug plugin atau file tema! Debugger hanya berhenti pada breakpoint yang ada di file "inti" utama atau asli! Adakah yang bisa membantu saya?


0

Pertama saya menambahkan define('WP_DEBUG', false);ke file wp-config.php (seperti yang dikatakan kebanyakan orang) pada instalasi lokal saya yang merupakan salinan terbaru dari situs produksi yang relevan (baik file maupun data). Ini membuat hal-hal cepat, aman, terpisah tetapi mencerminkan dengan baik setidaknya satu tempat plugin akan benar-benar digunakan.

Saya juga menambahkan plugin Debug Bar bersama dengan beberapa dari beberapa add-ons Bar Debug (Transien misalnya) - yang sesuai dengan plugin Anda.

Saya juga menggunakan Firebug add-on untuk Firefox yang sangat baik untuk membantu melacak html, css dan masalah JavaScript juga untuk melihat keanehan tata letak.

Saya menggunakan UltraEdit yang telah saya gunakan selama 15+ tahun untuk sejumlah besar kode (php hingga SQL) baik di kantor maupun di rumah dan jadi ini berfungsi dengan baik untuk saya, tetapi mungkin tidak cukup untuk menilai sebagai IDE untuk banyak orang. Ini memiliki penyorotan sintaks, penyelesaian otomatis dan fitur tata letak kode dan sekelompok alat pintas html dan css yang dapat membantu menghindari kesalahan ketik dan sama. Sebagian besar ini membawa keakraban bagi saya yang merupakan aspek penting yang sering diabaikan dalam terburu-buru ke yang baru. Memori otot membantu pengulangan bahkan dalam pengkodean.

Dan tentu saja saya biasanya memiliki beberapa halaman yang sesuai dari codex terbuka di tab lain pada contoh yang cocok.

Ini semua membantu dalam berbagai cara untuk menyoroti kesalahan pengkodean, penguraian, fungsional, dan tata letak serta tidak banyak mengganggu cara kode saya atau jika tidak ada yang salah. Sebagian besar dapat diabaikan atau dinonaktifkan sebentar jika Anda bereksperimen atau mengerjakan sesuatu yang akan Anda kunjungi lagi nanti.

Oh, dan tidak ada yang salah dengan gema atau print_r yang diposisikan dengan baik untuk memeriksa sesuatu pada kunci (selama Anda menghapusnya ketika Anda selesai).



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.