Gelişmiş PHP hata ayıklama için xdebug nasıl kullanılır
Xdebug neden olağanüstü ve hayatımı nasıl değiştirdiği
Xdebug hazırlayın
Xdebug ile hata ayıklama nasıl başlar
Gelişmiş hata ayıklama
Alternatif Xdebug
Destek Xdebug
Görsel olarak bir şey öğrenmeyi tercih eden bir kişi iseniz, geliştirici eğitimcimiz Jonathan, Xdebug’un phpstorm ile nasıl kullanılacağını detaylandıran kısa bir video yaptı.
if (! function_exists (‘_log’))) {function _log ($ mesaj) {if (wp_debug === true) {if (is_array ($ mesaj) || is_object ($ mesaj)) {error_log (true true)) ; } else {error_log ($ mesaj); }}}} Birisi beni Xdebug ile tanıştırana kadar ihtiyacım olan tek şey bu ve hayatım değişiyor. Aşağıda abartın, ama bu oldu! Hata Ayıklama’yı ERROR_LOG veya VAR_DUMP gibi işlevleri kullanarak attığınızda, yalnızca belirttiğiniz değişkenleri görüntülersiniz, bu da ihtiyacınız olan şey olmayabilir. Örneğin, bazı kodları çözerken, değişkeni hata ayıklamak için bir yerde işlevler eklersiniz. Hata ayıklama hattı çalıştırılacak şekilde sayfanızı yenileyin ve sonuçları görmek için hata günlüğünüzü kontrol edin. Bu size karşılaşılan sorunların nedenleri hakkında bilgi vermezse, geri dönmeli ve koda daha fazla hata ayıklama sırası eklemelisiniz. Durulayın ve tekrarlayın. Xdebug, kod yürütme sırasında kırmanıza ve talepler sırasında kapsamdaki tüm değişkenleri kontrol etmenizi sağlar. Yani, bu döngünün yalnızca bir yinelemesi için sorunu çözmek için ihtiyacınız olan her şeye sahipsiniz. Sorunları izlerken çok zaman kazanıyorsunuz ve geliştirme iş akışınız daha verimli. Xdebug ile Problem Çözme ++ Xdebug, bilmediğiniz nedene neden olan sorunu çözmeye çalışırken gerçekten parlıyor. İşlevinizin hasar gördüğünü biliyorsanız, içindeki günlük hattı iyidir ve iyi işlev görür. Ancak garip problemlerin davranışı, bir projenin WordPress eklentisi veya çekirdeğin kendisi gibi herhangi bir yerden gelebilir. Nasıl izliyorsun?
Breakpoint kullanarak, kod yürütmeyi istediğiniz zaman duraklatabilirsiniz, bu da yapılacak en iyi şey, yanlış bir şey bulana kadar Xdebug ile (daha sonra daha sonra) kod yürütmeyi takip etmek olduğu anlamına gelir. Zamandan tasarruf etmek için, sorunun nedeni olarak analiz edilen kodu ihlal etmek yerine, sorunun potansiyeline yaklaşana kadar infazda kırılma noktasını daha da ileriye taşıyabilirsiniz. Bir sorun bulduğunuzda, belirlendikten sonra değişkenlerin değerini hızlı bir şekilde değiştirebilirsiniz, böylece aynı istek sırasında hata ayıklama sırasında potansiyel gelişmeyi test edebilirsiniz. Mevcut kod sorununa tepki vermek. Bunun test odaklı bir gelişme (TDD) gibi olduğunu düşünün, ancak test yazmak yerine önce hata ayıklayıcı kullanır. Hata ayıklama odaklı geliştirme (DDD) ‘nin yaygın olarak kullanılan bir terim olup olmadığından bile emin değilim, ama benim için Xdebug’u çeşitli şekillerde yeni bir kod yazmama yardımcı olmak için kullandım:
Kodda benim için mevcut verileri bulmak için mevcut dizileri, nesneleri ve sınıf örneklerini kontrol edin, böylece yazdığım yeni kodda kullanabilirim
Beklendiği gibi işlevi test etmek için yeni yazılmış kod kodunu hemen hata ayıklayın
Bu her zaman yaptığım bir şey değil, ama Xdebug ihtiyacım olduğunda bana bu içgörü verdi.
Xdebug’u yüklemek, umarım açıkladığım faydalar Xdebug’u kullanmak istemenizi sağlar ve birkaç kurulum adımına hazırsınız. Xdebug’u yüklemek için bazı pratik bağlantılara sahip yerel ortamların en yaygın listesini topladım: MAMP
Mamp Pro
XAMPP
VVV
misafirhane
garson
Masaüstü sunucusu
Yerel WP
Devinsta
Liman işçisi
Lando
Şeytan Kutusu
Matt Stauffer ayrıca yakın zamanda mevcut popüler yapılandırmaların bir listesini derledi, bu yüzden kaçırırsam, orada yerel ortamınız için bir şeyler bulmalısınız. Farklı yerel ortamlarla mı çalışıyorsunuz ve rehberliğe mi ihtiyacınız var? Bize yorumlarda söyleyin.
Xdebug Sürüm 3 Kasım 2020’de Xdebug 3 yayınlandı. Büyük performans ve PHP 8 desteğini geliştirmenin yanı sıra, en önemli değişiklik yeni mod ayarları aracılığıyla Xdebug işlevselliğini etkinleştirme şeklinizdir. Çeşitli hata ayıklama modlarını etkinleştirmenizi kolaylaştırmanın yanı sıra, bu da PHP’nizde Xdebug’u yapılandırma şeklinizi de değiştirir. Yerel geliştirme ortamınız için Xdebug’u yüklemek ve yapılandırmak için takip ettiğiniz çevrimiçi öğretici, hangi ayarları yapılandırmanız gerektiğini belirler. Neyse ki, size rehberlik etmek için sürüm 2’den sürüm 3’e güncellenecek bir Xdebug yardım belgesi vardır.
Kısa bir örnek olarak, sürüm 2’yi yüklediyseniz, PHP.ini ayarını şöyle görünecek şekilde yapılandırmanız istenebilir: [xdebug] zend_extension = “/path/to/xdebug/extension/xdebug.so” xdebug .Remote_enable = 1 xdebug .remote_host = 127.0.0.1 xdebug.remote_port = “9000” Sürüm 3 yüklerseniz, bunu şöyle yapılandırmanız gerekir: [xDebug] Zend_extenion = “/yol/to/xdebug/ekstansiyon/ekstraj xdebug.so “xdebug.mode = hata ayıklama xdebug.client_host = 127.0.0.1 xdebug.client_port =” 9003 “Sürüm 3’te, farklı xdebug modlarını coma.mode tarafından ayrılan listede belirleyerek de etkinleştirebilirsiniz. Bu makalenin izini, Mod hata ayıklamaya ayarlanmış olarak Xdebug 3’ü kullanıyorum, ancak sürüm 2 için herhangi bir farkı tartışacağız. Ve tahmin et? PHPStorm, Xdebug ile olağanüstü bir entegrasyona sahiptir ve yardım belgeleri tam bir hazırlık kılavuzu içerir. PHPStorm kullanmıyorsanız, Visual Studio kodu ve editör gibi entegre geliştirme ortamının (fikirler) çoğu Xdebug’u kullanacak şekilde yapılandırılabilir. Hata Ayıklama Başlat Xdebug’u yükledikten ve PHPStorm’u yapılandırdıktan sonra kodunuzu etkileşimli bir şekilde hata ayıklamaya başlayabilirsiniz. Bu, kodunuzun belirli bir satırındaki kesme noktasını ayarlayarak ve PHPStorm’a gelen bağlantıyı dinlemesini söyleyerek yapılır. PHP bir kesme noktası olan satırları yürüttüğünde, Xdebug yürütmeyi girip durduracak ve yürütme sırasında meydana gelen her şey hakkında değerli bilgiler almanıza izin verecektir:
Hata ayıklama paneli yan panelinde kod yürütmeyi kontrol etmek için çeşitli düğmeler bulunur. Burada ekran görüntülerinde göründüğü gibi yukarıdan aşağıya doğru: PHP Yürütme ile Programlara Devam Et
Program Duraklaması – Hata Ayıklama Sırasında Mevcut Değil
Durdur – Yürütmeyi Durdurun
Break noktaları görüntüleyin – Tüm proje dosyalarında ayarlanan tüm kesme noktası pencerelerini açın Sessiz Kesme Noktaları – Yürütme sırasında kesme noktalarını devre dışı bırakın (daha fazla ihlal etmeden istekleri tamamlamak için iyidir)
Ayarlar – hata ayıklayıcı ekranı ayarlayın
PIN sekmesi – Daima hata ayıklama panelini gösterin
Hata ayıklayıcı sekmesine, konsol ve çıktıya ek olarak, üst bıçaklar, kod tabanının çeşitli bölümlerini kontrol edebilmeniz için kod boyunca hata ayıklayıcı yöntemini kontrol edin:
Yürütme noktasını görüntüleyin – Programın hasar gördüğü programa geri dönün
Adım üzerine çalışın ve bir sonraki dosya satırına geçin
Adım – Bir sonraki satırda bir veya daha fazla işlev varsa, hata ayıklayıcıyı geçeceklere taşıyın
Zorla Adım – Geçen olarak işaretlenmiş işlevin girilmesi
Dışarı Çıkın – Hata Ayıklayıcısı geçerli işlevden onu çağıran işleve geri götürün
İmleç’e koş – İmleçin bulunduğu sıraya koş
İfadenin Değerlendirilmesi – Hata Ayıklayıcı çalışırken PHP çalıştırın (bunun bir JS Chrome konsolu gibi olduğunu düşünün)
Kullanıcı tarafından belirtilen sabiti görüntüle – Kodunuza göre belirlenen her PHP sabiti için ekranı etkinleştirin
Değerleri Göster Adresler – Nesnenin bellek adresinin görüntüsünü etkinleştirin
Boş Superglobal Değişkenleri Göster – Boş Superglobal ekranı kapatın
Atlanan listeye yöntemler ekleyin – Bir dahaki sefere aktarılacak yöntemleri işaretleyin
Bu düğmelerin çoğunun bir klavye kısayolu var, ancak en yaygın kullanılanlar: F9 – Programa devam edin
F8 – Steping
F7 – adım
Durma noktası, kodun sol kanalizasyonlarına, kırmak istediğiniz yerde istediğiniz çizgi boyunca geçici olarak eklenir.PHPStorm ayrıca, kırılma noktası tamamen etkinleştirildiğinde kontrol etmek için PHP mantığı eklediğiniz koşullu kesme noktasını ayarlamanıza izin verir:
Sorunları çözerken, genellikle ne zaman değiştiğini görmek için istek yürütme boyunca değişkenlerin değerini kontrol etmek ve incelemek için yararlıdır.PHPStorm, Panel “Saatler” de görülen ve görüntülenen listeye, ana “değişken” panelindeki tüm verilerden ayrı olarak değişkenler eklemenizi sağlar.Değişkenleri, hata ayıklama ve saate ekleme veya aynı şeyi “değişken” paneldeki değişkenden yapmayı seçme sırasında dosyadaki değişkenleri doğru tutarak izleyebilirsiniz:
Ancak, saat değişkenlerle sınırlı değildir. Gösteri listenize bir ifade veya işlev bile ekleyebilirsiniz. Bu, site_url () veya get_post () gibi birçok yardımcı işlev kullanan WordPress gibi CMS ile çalışırken çok kullanışlıdır. Gösteri listenize tam bir işlev çağrısı ekleyerek, işlevin sonuçlarını daha sonra her zaman görebileceksiniz. Xdebug sürüm 2’deki kazık izleri, Xdebug’u etkinleştirmek, her hata, bildirim veya PHP günlüğüne yazılmış uyarı için genişletilen izleme kazıklarını etkinleştirecektir. Sürüm 3’ün sürümü ile bu değiştirilir, böylece Xdebug modunu geliştirmeye ayarlanarak açıkça etkinleştirilmesi gerekir. Sorun hakkında beni uyarmak için wp-concent/debug.log veya php error_log’a güvendiğim için, ancak yığın izlerini görmek için phpstorm kullandığım için, genişletilmiş kazıkların (ve çok gürültülü) izlerini etkinleştirmedim. Xdebug sürüm 2 kullandığımda, bunu wp-config.php: if (function_exists (‘xdebug_disable’)) {xdebug_disable ();
} Temel bilgilere hakim olmaya devam ettiniz mi? Daha fazlası için hazır? Gelişimsel iş akışınızı geliştirmek için Xdebug’u kullanmanın bazı sürekli yolları. Profil Oluşturma Kodunuzla veya web sitenizle ilgili performans sorunlarını gerçekten araştırmanız gerektiğinde, bulduğumuz en iyi araçlardan biri daha önce yazdığımız Blackfire’dır. Ancak Xdebug aynı zamanda sizin için bir profil ve Phpstorm sonuçları yorumlayabilir, bu çok iyi çünkü bu phpstorm terk etmeniz gerekmediği anlamına gelir! Profil Profilatörünü etkinleştirmek için, Xdebug Bölümünde bu satıra yorum eklemek veya silmek için php.ini dosyanızı düzenleyin: sürüm 3 xdebug.mode = xdebug.output_dir = “/yol/to/istenen/çıktı/dizin” sürüm 2 xdebug. profiler_enable = 1 xdebug.profiler_output_dir = “/yol/to/istenen/profiler/output/dizin”, xdebug, kodunuzun her yürütmesi için belirttiğiniz output_dir veya profiler_output_dir’de bir günlük dosyası oluşturur. İşiniz bittikten sonra profil cihazını devre dışı bırakmayı unutmayın, böylece sabit sürücünüzü bir günlük dosyasıyla doldurmazsınız! Veya işletim sisteminiz için çıktı dizini /TMP dizini /TMP’ye ayarlayın. Bu günlük daha sonra Tools> Xdebug Profiler Anlık Görüntüsü’nü analiz ederek ve günlük dosyalarını seçerek PHPStorm’da analiz edilebilir. Görselleştirme, Blackfire kadar derin değildir veya KCacheGend gibi bir şey kullanır, ancak yine de kodunuzdaki tıkanıklığı analiz etmenin iyi bir yoludur:
SSH aracılığıyla uzun mesafeli hata ayıklama, hata sorunlarını yalnızca geliştirme ortamınızda geri getirebiliyorsanız çözebilirsiniz. Tabii ki, bir web sitesi çalıştırırken, geliştirme ortamınızın üretime mümkün olduğunca yakın olduğunu ve üretim veritabanının bir kopyasında mümkün olduğunca yakın olduğunu öneriyoruz. Ancak, bazen hatalar ve tuhaflıklar sadece üretimde gerçekleşir. Kimse doğrudan sitede oynamaya başlamak istemez, günlük hatları eklemek için dosyaları düzenler. Endişelenme, Phpstorm ve Xdebug size yardımcı oldular! Xdebug’u sunucuya uzakta yükleyebilir ve xdebug ve phpstorm kullanarak kod yürütmesinde yerel olarak hata ayıklayabilirsiniz. Bu özellik bir kurtarıcıdır ve çok fazla ayar gerektirmez. İşiniz bittikten sonra Xdebug’u kapattığınızdan emin olun, böylece sitenizin performansı Xdebug’dan gereksizden etkilenmez. Xdebug, WordPress için PHP’yi hata ayıklamanın tek yolu mu? Kısa cevap ‘hayır’, uzun cevap ‘bağımlı’
.Xdebug, DEBUG’un PHP adımlarını etkinleştirmenin önerilen yolu olsa da, diğer seçenekleri düşünmek isteyebilirsiniz.Son zamanlarda yolumu geçen biri Spatie’deki insanlardan Ray’dı.Ray, Mac, Windows veya Linux’ta çalışan ve PHP projenize bağlı ücretli bir uygulamadır.WordPress için hata ayıklama yaparsanız, bu bir besteci paketi veya WordPress eklentisi aracılığıyla yapılır.Her şeyi hazırladıktan sonra, Ray uygulamasına herhangi bir hakem verisini göndermek için Console.log () JavaScript yöntemine çok benzer Ray () işlev çağrısını kullanabilirsiniz.Basit dizeler, değişkenler (dizi ve nesneler dahil) ve hatta bazı veri kombinasyonları gönderebilirsiniz.Ray (‘Merhaba Dünya’);Ray (‘Değişkenim’, $ değişken);Ray (‘Array’, $ array, ‘nesne’, $ object);
Ray, JSON HTTP API’sına kıvrılma isteği yaparken yapabileceğiniz gibi benzer bir işlem kullanarak bu verileri Ray uygulamasına gönderir. Ray kullanmanın Xdebug’a kıyasla birkaç avantajı vardır. Ray, uygulama çalışırken yalnızca kodunuzdan Ray uygulamasına veri göndereceğinden, Xdebug gibi sisteminizin performansında çok etkili olmayacaktır. Xdebug 3, Xdebug 2’ye kıyasla performansta oldukça iyi bir gelişmedir ve gerektiğinde tarayıcı uzantısından hata ayıklamayı devre dışı bırakabilirsiniz. Bununla birlikte, bu hala yerel PHP ortamınızda kurulu ve aktiftir, böylece PHP’nizde devre dışı bırakarak tamamen öldürebilirsiniz. Ray ayrıca, kod yürütme, SSH aracılığıyla uzun mesafeli hata ayıklama ve PHP istekleri sırasında çalıştırılan her sorguyu yakalama yeteneği gibi daha karmaşık şeyler yapmanıza olanak tanır. Xdebug biraz daha fazla ve özgür yapıyor, ancak Ray, özellikle de geliştirme sırasında dökülme hata ayıklamaya güveniyorsanız, hata ayıklama için bir seçenek olarak düşünülmesi gereken bir şey. Xdebug’u desteklemek Xdebug’un arkasındaki kişi Derick Rethans. O tek Xdebug geliştiricisidir ve Xdebug’un bakım ve güncellemesi üzerindeki sürdürülebilir çalışmalarını finanse etmek için sponsorlara bağlıdır. Burada, Delicious Brains’te, Şubat 2019’dan beri Patreon’un destekçisiyiz. Siz veya şirketiniz Xdebug’u yararlı olarak görüyorsanız, neden Patreon veya Github aracılığıyla ona sponsor olmasın?