Eklentileri nasıl hata ayıklarsınız?


49

Eklenti yazma konusunda oldukça yeniyim ve hata ayıklama konusunda zorlanıyordum.

Çok yankı kullandım ve özensiz ve çirkin.

Bunu yapmanın daha iyi bir yolu olduğundan eminim, belki de eklentiyi dahil etmek için tüm siteyi çalıştırabileceğim bir hata ayıklayıcı içeren bir IDE?


1
Tamamen IDE içinde WordPress çalıştıran bir IDE görmedim ... ama bu harika olurdu. WAMP yerel olarak çalıştırarak eklentileri hata ayıklama ve Dreamweaver'da kod. Eğer WP_DEBUGJohn'un önerdiği gibi yanlış yaparsanız, o zaman nelerin yanlış gittiği hakkında iyi bir fikir edersiniz, eğer varsa, senaryolarınızda. Ardından değişiklikleri Dreamweaver'da düzenleyebilir, tarayıcıda Ctrl + S ve ardından F5 tuşlarına basabilirsiniz.
EAMann

1
@EAMann - Hem PhpEd'i (Windows için) hem de PhpStorm + XDEBUG'ı (Mac, Linux ve Windows için) kontrol ettiğinizden emin olun.
MikeSchinkel

Yanıtlar:


21

Wp-config.php ve değişim gidin define('WP_DEBUG', false);için define('WP_DEBUG', true);. Ayrıca, Andrew Nacin'ın Log Deprecated Notices eklentisini de kurun .


12
Nacin'in diğer makalesini de kontrol ederim: andrewnacin.com/2010/04/23/5-ways-to-debug-wordpress
kevtrout

PHP 5.4+ ile muhtemelen E_STRICT bildirimlerinden haberdar olacaksınız. Bu özeti eklentiler klasörüne bırakın ve Sıkı bildirimleri kaldırmak için etkinleştirin, normal hizmetinize geri dönmek için devre dışı bırakın.
webaware

12

Yazdırılan hatalarla karşılaşıyorsanız, x-debug, PHP'ye modern backtraces ekleyen mükemmel bir PHP uzantısıdır.

Hata olmadığı yerde neler olup bittiğini çözmeye çalışıyorsanız, en sevdiğim yaklaşım çıktılarını bir dosyaya kaydeden bir işlev tanımlamaktır. Bu yüzden plog ($ değişken) yapıyorum ve bu daha sonra inceleyebileceğim günlük dosyasında görünüyor. Bu, header () çağrılmadan önce olanları veya STDOUT'a yazdıramayacağınız diğer durumları çözmeye çalıştığınızda özellikle yararlıdır.


10

Xdebug + NetBeans IDE kullanın . Tamamen konfigüre edildiğinde - ki kolay olan - eklentinizdeki kesme noktalarını ayarlayabilir ve değişkenleri kesme noktalarında izleyebilirsiniz. Ben bu konuda eklentileri veya herhangi bir php uygulamalarında hata ayıklamak için en iyi yol olduğunu düşünüyorum.


6

Eski moda şekilde hata ayıklarım, error_log()ing ve var_dumping. Bunun benim için en etkili yol olduğunu düşünüyorum, error_logdiziler ve nesneler acı verici olabileceğinden , farklı türde verileri işlemek için birkaç sarmalayıcı işlevim var . Ayrıca, içinde kullanmadığınız print_r()zamanlarda okumak zor olabilir <pre>. Ben tj_log()hata kaydı için ve tj()temelde, bir takdim Mannor herhangi bir veri tipini gösteren çıkış (gösteren:

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 );

}

O zaman ben sadece yaparım: tj( $current_user );ya da her neyse.


5

Çok sayıda IDE ile ilgilendikten sonra, ultra özelleştirilmiş bir Sözdizimi Vurgulama renk şemasıyla eski düz Notepad ++ 'a yerleştim .

Shift-Ctrl-X tuşlarına bastığımda imlecimin bulunduğu yerde aşağıdaki kodun çıkacağı şekilde ayarlanmış bir makro var:

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

Çok basit, ancak hatalarımın% 90'ını bu makro ve WP_DEBUG etkinleştirilmiş olarak avlayabilirim.


2
Güzel hareket. Editörlerde klavye kısayol tuşları!
Hakre

1
Bunun print_r($var, true)yerine verilen çıktıyı tercih ederim var_dump.
brasofilo

5

Günlük dosyası oluşturmak için küçük bir sınıf yazdım, ajax çağrılarını hata ayıklarken çok kullanışlıdır.

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

Sadece şöyle bir şey yapman gerekiyor:

Hata ayıklama :: log ("Bu bir hata ayıklama mesajıdır");

Bu satır çalıştırıldığında, günlük dosyasına bir mesaj eklenir ve bundan sonra tail komutunu kullanabilirsiniz (eğer bazı unix'in stil işletim sistemini kullanıyorsanız)

kuyruk -f mylogfile.log

Bu işleve geçebilirseniz bir dizi veya bir nesneyi de.

Günlük dosyanızı kaydetmek istediğiniz bir yol için 20 numaralı satırı değiştirmeniz gerektiğini unutmayın.


3

Linux'ta Aptane IDE'yi ve Windows'ta UltraEdit'i kullanıyorum ve bunun da bir PHP ayrıştırıcısı var. Ayrıca, xDebug'daki tüm ipuçlarını sabit ile WP_DEBUGtanımlanmış olarak görüntülüyorum wp-config.php.

Ayrıca bu konudaki yayınıma bakın ve geliştirme araçlarınız hakkında yorumda bulunmaktan ve yorum yapmaktan çekinmeyin.




1

Tavsiye edebileceğim iki IDE var ve her ikisini de çok kullandım: PhpED (yalnızca Windows) ve PhpStorm + XDEBUG (Mac, Windows ve Linux.) Artık Mac'tayım, yalnızca ikincisini kullanabilirsiniz.

İkisi de ROCK! PhpStorm’un Eylül 2010’dan önce 49 dolar, ondan sonra ise 99 dolar olduğu iyi haber. Windows'da olsaydım ve tekrar seçmek zorunda kalsaydım, hangisini seçeceğimi bilmiyorum.

Açıkçası yardım edemem, ancak bu iki araçtan birini kullanmayan herhangi bir eklenti geliştiricisinin özellikle WordPress eklentileri geliştirmek için nispeten yeniyse, ciddi şekilde engellendiğini hissediyorum.


1

Krumo - tarz php hata ayıklama sınıfı

Gerçekten güzel bir şey "krumo" php sınıfıdır. Dakikada uygulanır ve her tür değişkende hata ayıklamak için kolay bir yol sunar:

  • nesneler,
  • diziler,
  • dizeleri / şamandıra / tamsayı / vb.

Ayrıca , geri çekilmeye yardımcı olur, yüklenen sınıfları veya içerdiği dosyaları ve talep edilen her şeyi gösterir.

Ayrıca BEDAVA!

İndir

Krumo ( @sourceforge) Instagram Profilini Görüntüle


0

ThemeForest'te satın alabileceğiniz LogPress adlı 13 $ 'lık bir eklenti kullanıyorum ve bu tamamen Tanrı'nın göndermesi gereken bir şey. Eklentileri ve siteleriyle ilgili her şeyi hata ayıklayabilirsiniz. Firebug konsol günlüğü ve çok daha fazlasını destekler. Onsuz yaşayamam, bu eklentiyi bu kadar kullanırım.

Bu eklenti muhtemelen harcadığım en iyi para ve Wordpress eklenti geliştirmemde sayısız saatler kazandı.


Vay canına, hiçbir şekilde bir ilişkim olmayan ücretli bir eklentiyi önerdiğim için reddedildi? Bu biraz ağır el değil mi?
Dwayne Charrington,

Aşağı oy kullanan ben değilim, ama şaşırmadım. Eklentiyi satmaya çalışıyormuş gibi kelimeler kullanıyorsunuz. İşleri önermek iyidir, ancak "mutlak Tanrı gönderme" gibi zor işlere yol açıyor. İnsanlar ilanlardan nefret eder. Sadece dili kısın ve öneri kendisi için konuşacaktır.
icc97

0

Ben phpED ve xdebug kullanıyorum ama benim için (ve başkası gibi görünüyor), eklentilerde veya tema dosyalarında hata ayıklamak mümkün değil! Hata ayıklayıcı, yalnızca ana veya orijinal "çekirdek" dosyalardaki kesme noktalarında durur! bana yardımcı olan var mı?


0

Öncelikle define('WP_DEBUG', false);wp-config.php dosyasına (çoğu insanın söylediği gibi) ilgili bir üretim sitesinin (hem dosya hem de veri) yeni bir kopyası olan yerel kurulumuma ekliyorum . Bu, işleri hızlı, güvenli, ayrı hale getirir, ancak eklentinin gerçekten kullanılacağı en az bir yeri iyi yansıtır.

Ben de eklemek ayıklama Bar uygun olarak eklentileri - eklentileri (örneğin Geçici) ayıklama Bar bazı bazılarıyla birlikte eklentisi.

Ayrıca Firefox için Firebug eklentisini kullanarak html, css ve JavaScript konularını iyi bir şekilde düzenleyebiliyorum.

Hem işyerinde hem de evde bir sürü kodlama (SQL'den PHP'ye) için 15+ yıldan beri kullandığım UltraEdit'i kullanıyorum ve bu yüzden bu benim için iyi çalışıyor ancak belki de bir IDE olarak değerlendirecek yeteri kadarı yok birçok millet. Bu sözdizimi vurgulama, otomatik tamamlama ve kod düzeni özellikleri ve yazım hataları ve benzerleri önlemek yardımcı olabilir bir sürü html ve css kısayol araçları vardır. Çoğunlukla bu bana sık sık yeniye göz ardı edilen önemli bir yönü olan aşinalık kazandırıyor. Kas hafızası kodlamada bile tekrarlanabilirliğe yardımcı olur.

Ve tabii ki genellikle uygun bir örnek üzerinde başka bir sekmede açık olan kodeksin bazı uygun sayfalarına sahibim.

Bunların hepsi kodlama, ayrıştırma, işlevsellik ve düzen hatalarını vurgulamak için farklı şekillerde yardımcı olurlar ve kodlamada veya hiçbir şeyin yanlış olmaması durumunda çok fazla karışmazlar. Daha sonra tekrar deneyeceğiniz bir şeyi deniyorsanız veya çalışıyorsanız, bir süre için çoğu göz ardı edilebilir veya devre dışı bırakılabilir.

Oh, ve bir anahtardaki bir şeyi kontrol etmek için iyi konumlandırılmış bir yankı veya print_r ile ilgili yanlış bir şey yoktur (işiniz bittiğinde onları çıkardığınız sürece).



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.