Web sayfalarındaki hatalar ve bunların nasıl bulunup düzeltileceği. Kesme Noktaları sekmesini kullanarak birden çok kesme noktasını yönetin. HTML sayfa kodunun yanlış işlenmesi
Habré hakkında web geliştirmenin ilginç ve karmaşık yönlerini anlatan birçok makale var, ancak bir web geliştirici olarak kariyerlerinin başlangıcında, PHP'den ilk adımı atmalarını sağlayacak materyalleri görmek isteyen birçok okuyucu var. 24 saat ciddi anlamda gelişme var ve bu konudaki tecrübelerimi paylaşmak isterim.Web uygulamasının özellikleri onu iki bölüme ayırır: istemci ve sunucu. İstemci tarafında, JavaScript kodu çalışır (belki VBScript'i bir yerde bulabilirsiniz, ancak muhtemelen bu durumu dikkate almayacağız), sunucu tarafında, prensipte çok şey var, ancak en popüler dil olan PHP'yi dikkate alacağız. web uygulamalarının sunucu tarafı. İstemci tarafında Flash uygulamalarında hata ayıklama ve profil oluşturma hakkında konuşmak da ilginç olurdu, ancak işlenen konu zaten kapsamlı, o yüzden şimdilik bırakalım.
HTML kodunun analizi ve doğrulanması, istemci kodunda hata ayıklama görevlerine de atfedilebilir. Tamamen programlama alanından değil, aynı zamanda önemli bir görev gibi görünüyor.
Tartışılan görevlerin bazı bölümleri diğer makalelerde zaten ele alındı ve ben onlara bağlantılar sağladım.
İstemci kodunda hata ayıklama ve profil oluşturma
JavaScript kodunda hata ayıklamanın "klasik" yolu, uyarı işlevini ve türevlerini kullanmaktır. Kariyerimin başında, JavaScript için print_r işlevini kişisel olarak yazdığımı hatırlıyorum çünkü diziler ve nesneler üzerinde hata ayıklama bilgilerini görüntüleme olasılığını görmedim. Şuna benziyordu:function print_r (değişken) (if (Dizinin instanceof değişkeni || Objenin instanceof değişkeni) (var tuşu; for (anahtar değişkende) uyarı (anahtar + "=>" + değişken);) başka (uyarı (değişken);))
Tabii ki, hiçbir konuşma profili çıkarma işlemi yapılmadı.
Bu yaklaşımla, konsol nesnesi hakkındaki bilgiler bile devrim yaratıyor.
Web uygulamasının istemci tarafının özgüllüğü, kodun tümünde hata ayıklamayı gerektirir. popüler tarayıcılar... Tabii ki, çoğu zaman hata ayıklama Internet Explorer"e ve diğer herhangi bir normal tarayıcı, ancak tüm seçeneklere bakacağız.
Mozilla Firefox
Muhtemelen Firefox, istemci kodunda hata ayıklamada öncüdür. Uzun bir süre, geliştirme için en uygun tarayıcı olarak gösterildi ve muhtemelen her şeyi içeren Firebug uzantısı sayesinde. gerekli fırsatlar HTML kodu doğrulaması hariç.Ayrıca, sürüm 4'ten başlayarak, Firebug'un "Konsol" ve "Ağ" sekmelerinin bazı işlevlerinin yanı sıra CSS hatalarını ayıklamak için bazı olasılıkları uygulayan yerleşik bir Web Konsolu ortaya çıktı.
6. sürümden itibaren, Firebug'un işlevlerinden birini de uygulayan ve doğrudan tarayıcıda kod yazmanıza ve çalıştırmanıza izin veren Basit JavaScript Düzenleyicisi vardı.
Sürüm 10'dan itibaren, HTML kodunu incelemenize olanak tanıyan Sayfa Denetçisi ortaya çıktı ve CSS özellikleri yani, HTML sekmesinin işlevselliğini uygular.
Html Validator uzantısı genellikle HTML kodunun doğrulanmasından sorumludur. Sadece üzerindeki hataların sayısını gösteren simgesi ana sayfa habrahabr.ru sitesi, Sayfa Denetçisi ile resimde tarayıcının sağ alt köşesinde görülebilir.
Ayrıca, bu fırsatı değerlendirerek, bu tarayıcı için, Habré'nin zaten karşılık gelen bir tanesine sahip olduğu, hayatı kolaylaştıran birçok uzantı olduğunu belirteceğim.
Google Chrome ve Safari
Bu WebKit tabanlı tarayıcılarda, çok iyi geliştirilmiş ve Firebug ile neredeyse aynı işlevleri uygulayan yerleşik bir Web Inspector geliştirme aracı bulunur. Aynı zamanda, ona haraç ödemeliyiz, "ağabey" için olağan olan tarayıcıyı yavaşlatmaz.Chrome'da Ctrl + Shift + I tuşlarına basılarak veya sadece F12 ile çağrılabilir. Safari'de iyi gizlenmiştir ve onu kullanmak için tarayıcı tercihlerinizde geliştirme özelliklerini etkinleştirmeniz gerekir. Daha sonra geliştirici araçları, ana menünün "Geliştirme" öğesinden veya Ctrl + Alt + I klavye kısayoluyla kullanılabilir hale gelecektir.
HTML kodunu doğrulamak için üçüncü taraf uzantıları da yüklemeniz gerekir. Örneğin Chrome için Geçerlilik olabilir. Henüz Safari için uygun bir şey bulamadık.
Opera
Opera ayrıca, Ctrl + Shift + I tuşlarına basılarak herhangi bir zamanda çağrılabilen "Opera Dragonfly" adlı yerleşik bir geliştirici aracına sahiptir. WebKit'in bize sunduğuna benzer ve benzer yeteneklere ve avantajlara sahiptir, ancak kişisel görüşüme göre daha az kullanışlıdır.Sunucu tarafı kodunda hata ayıklama ve profil oluşturma
Xdebug
Başta anlaştığımız gibi, sunucunun PHP kullandığı bir durumu düşünüyoruz. Buradaki "klasik" hata ayıklama yöntemleri echo, print_r ve var_dump'tır, ancak aynı zamanda en iyi evler - Xdebug gibi bir hata ayıklama olanağı da vardır. Şahsen benim için enstitüde çalışmanın özellikleri nedeniyle “tıpkı Delphi'deki gibi” görünüyordu.xdebug uzantısı, en azından kod boyunca ilerlemenize ve PHP programlamayı bir sonraki seviyeye taşıyan değişkenlerin değerlerini görüntülemenize olanak tanır. xdebug ile çalışmanın inceliklerini anlatan bir tane vardı. XDebug genellikle GNU/Linux depolarında bulunur, Windows'ta da dll dosyasını kopyalayarak kurulumu çok zor değildir.
Bu uzantıyı kullanırken, sunucudan geliştirme bilgisayarına (varsayılan olarak 9000 numaralı bağlantı noktasında) işlemesi gereken bir gelen bağlantı alınır. Bunu yapmak için IDE'nizi buna göre yapılandırmanız gerekir.
Bu arada, bir IDE kullanmak da ilerlemek için bir ön koşuldur. Bazı programcılar, vurgulanmış kodlu bir not defterinde ve bir IDE'de programlama arasındaki farkın yalnızca büyük projelerde görülebileceğine inanıyor, ancak kişisel olarak, farkın "Merhaba dünya!" - standart işlevlerin adlarının ve argümanlarının bir otomatik ikamesi buna değer.
XHProf
Genişletme hakkında
Evet, xdebug profil oluşturma yetenekleri sağlıyor, ancak Facebook'un geliştirilmesi "ve bu amaç için XHProf, kişisel olarak daha çok hoşuma gidiyor. Dürüst olmak gerekirse herhangi bir test yapmadım, ancak bu uzantının üretim sunucuları ve profil oluşturma için çok daha uygun olduğuna inanılıyor. gerçek yüklerde.Kurulum
Ne yazık ki, bu uzantı herhangi bir depoya dahil edilmemiştir. PECL'ye dahildir, ancak bir nedenden dolayı onu düzenli bir şekilde kurmak genellikle sorunlara neden olur. Bu sebeple kaynaktan kurulum yapmanız gerekmektedir.# Kaynakları alın wget http://pecl.php.net/get/xhprof-0.9.2.tgz # Kaynakları paketinden çıkarın tar -xvf xhprof-0.9.2.tgz # cd xhprof-0.9 uzantısını içeren dizine gidin 2 / uzantı / # Derleyin ve test edin phpize ./configure make make test # Uygar bir şekilde kurun checkinstall
xhprof.ini yapılandırma dosyası bize şöyle bir şey verir:
extension = / usr / local / lib / php / extensions / no-debug-non-zts-20090626 / xhprof.so
; Günlükler için dizin
xhprof.output_dir = "/ var / log / xhprof /"
profil oluşturma
Arşivi açarak elde ettiğimiz dizin, uzantı kaynaklarına ek olarak, profilleme sonuçlarını incelemek için bir web arayüzü ve uygulamanın profilini çıkarmak için bir kitaplık içerir.Profil oluşturmaya bir örnek verelim. Uygulama kodunuza aşağıdaki öğeleri eklemeniz gerekir:
// Komut dosyasını başlatın, profil oluşturmayı açın // hem CPU hem de bellek yükleri xhprof_enable (XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); / * * Ana uygulama kodu * / // Komut dosyasının sonu, profil oluşturmayı bitir, // sonucu günlüğe yaz $ xhprofData = xhprof_disable (); include_once XHPROF_DIR. "/ xhprof_lib / utils / xhprof_lib.php"; include_once XHPROF_DIR. "/ xhprof_lib / utils / xhprof_runs.php"; $ xhprofRuns = yeni XHProfRuns_Default (); $ namespace = "benzersiz bir isim"; $ runId = $ xhprofRuns-> save_run ($ xhprofData, $ ad alanı); Eko "\ n ";
Burada XHPROF_DIR sabiti, indirilen arşivi açtığımız dizine işaret eder.
Sonuçları analiz etmek için aynı web arayüzüne ihtiyacınız var. $ XHPROF_DIR / xhprof_html / dizininden alınabilir - koşullu olarak bu şekilde atayalım. Örneğin, onu web sunucusunun erişebileceği bir yere yerleştirdik ve example.com/system/xhprof/ adresinde mevcut, ardından çalışmanın sonucunu analiz etmek için ona aşağıdaki gibi başvurmamız gerekiyor:
Example.com/system/xhprof/?run=%runId%&source=%namespace%
Benzer bir sonuç elde edeceğiz:
Profil oluşturma, bir uygulamanın koduna sürekli olarak dahil edilebilir veya örneğin, belirli bir olasılıkla veya belirli bir koşulun varlığıyla rastgele başlamasını sağlayabilirsiniz. Örneğin, bunun gibi:
$ ihtiyaçProfiler = (mt_rand (0, 100)< 10 or isset($_COOKIE["xhprof"]));
if ($needProfiler)
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
Bu durumda, müşterilerden şikayet veya şüphe alarak, belirli bir süre için profilleme sonuçlarına başvurabilirsiniz. Ad alanı parametresini kullanarak, uygulamanın hangi bölümünün (hangi komut dosyası, denetleyici, eylem) profillendirildiğini belirleyebilirsiniz.
SQL Sorgu Profili Oluşturma
Kural olarak, uygulamada darboğaz olan veritabanı ile çalışır. Bu nedenle, sorgu profili oluşturma önerilir. Örneğin, mysql uzantı işlevlerinin etrafını saran bir sınıfın bir bölümünü düşünün. Evet, bu uzantının çok popüler olmadığını biliyorum ve eski güzel IE6'dan daha az ölmemesini istiyorlar. Kullanmaya teşvik etmiyorum, elimde olan böyle bir sınıf./ ** * İstek * @param string $ sql sorgusu* @param dizisi $ params Parametreler * @param string $ sorgu Derlenmiş sorgu * @return dizisi Sonuç * / genel işlev sorgusu ($ sql, dizi $ params = dizi (), & $ sorgu = "") ($ başlangıç = mikrozaman ( DOĞRU); // Sorguyu yürütmek, parametreleri "korumak" dahil $ stop = microtime (TRUE); $ time = $ stop - $ start; $ this -> _ addProfilerData ($ sql, $ time); // sonuç) özel işlev _addProfilerData ($ sorgu, $ zaman) (if (is_array (self :: $ profilerData)) (self :: $ profilerData = dizi ("sorgu" => $ sorgu, "zaman" => $ zaman); )) genel işlev __destruct () (if (is_array (self :: $ profilerData)) ($ this -> _ writeProfilerData (); self :: $ profilerData = FALSE;) // Veritabanı bağlantısını kes) özel işlev _writeProfilerData () ($ değerler = dizi ( ); foreach (self :: $ profilerData as $ satır) ($ sorgu = mysql_real_escape_string ($ satır ["sorgu"], $ bu-> con); $ zaman = (kayan) $ satır ["time"]; $ hash = crc32 ($ satır ["sorgu"]); $ değerleri = "($ hash," $ sorgu ", $zaman)";) if ($ değerleri) ($strValues = patlatmak ("," , $ değerleri); $ sql = "DELAYED INTO` profiler_queries` (`query_hash`,` sorgu`, `work_time`) DEĞERLER $ strValues"; @mysql_query ($ sql, $ this-> con); ))
Burada sorgu profili oluşturma verileri, profiler_queries tablosunda depolanır. Bu tablo MyISAM veya Archive türünde olabilir, çünkü bunlar, profil oluşturma sırasında yanıtta gereksiz gecikme yaratmayan tembel eklemeler gerçekleştirme yeteneği sağlar. aynen daha iyi arama tablodaki sorgular için, indeks oluşturmak istediğiniz sorgunun crc32-hash'inin yazılacağı INT türünde bir sütun oluşturmak daha iyidir.
Çözüm
Makalenin oldukça büyük olduğu ortaya çıktı. Belki burada en üste çıktım ve daha önce değinilen konulara değindim ama vaktinde böyle bir şey okumuş olsaydım - tüm bilgilerin bir araya toplandığı ve faydalı linklerin verildiği bir yazı olsaydı, benim için paha biçilmez yardım. Umarım makalem aydınlanma yolunda birisine de yardımcı olur.Elbette başkaları da var - onlardan kesinlikle bahsedeceğim.
Firefox için Firebug
emin değilim eğer ateş böceği geliştiriciler için diğer araçların öncüsüdür, ancak kesinlikle en popüler, kullanıcı dostu ve işlevseldir.
Firebug bir Firefox eklentisidir, yani onu Firefox eklentileri sitesinden indirip yüklemeniz gerekir.
Firebug'ı aramak için F12 tuşuna basmanız yeterlidir.
Bu eklentinin özellikleri:
- Dinamik olarak değişen HTML'yi denetleme ve düzenleme;
- Anında CSS düzenleme;
- JavaScript'te hata ayıklama, Komut satırı komut dosyalarını yürütmek için;
- Ağ isteklerinin izlenmesi - dosya ve komut dosyalarının, istek başlıklarının indirilme boyutlarını ve sürelerini görebilirsiniz;
- DOM ayrıştırıcı.
Bu olasılıklar hakkında ayrıntılı olarak uzun süre konuşabiliriz, ancak bence tüm okuyucularımız bunlara aşinadır ve değilse - detaylı bilgi Firebag'in ana sayfasında ya da İlya Kantor'un çevirisinde aynısı var.
Ateş böceğinin kendisine ek olarak, bunun için kullanışlı bir araca ihtiyacınız olabilir - ateş kurabiyesi(sürpriz :-) ile çerezleri görüntüleyebilir ve değiştirebilirsiniz.
Firefox için WEB Geliştirici Araç Çubuğu
Ognelis'e bir başka faydalı katkı. Şuna benziyor:
Noktalara bir göz atalım.
Devre dışı bırakmak
JavaScript'i kapatmanıza, geliştirme sırasında çok yararlı olan önbellek kullanımını devre dışı bırakmanıza izin verir (sayfanın aşağıdakilerle yüklendiğinden emin olmanızı sağlar). En son güncellemeler), sayfada kullanılan renkleri iptal edin ve bunları standart olanlarla değiştirin, yönlendiren başlığında (yönlendirenin yapıldığı sayfa) gönderimi yasaklayın.
Kurabiye
Çerezlerle çalışmak için kullanışlı bir seçenek: bunlar görüntülenebilir, silinebilir, reddedilebilir ve eklenebilir.
CSS
Bu menü, Geliştirici Araç Çubuğunun en havalı özelliğini içerir - anında CSS düzenleme. Ayrıca css'i görüntülemek, yasaklamak vb. vb. mümkündür. Bence olması çok faydalı kısayollar(Örneğin CTRL + SHIFT + C, doğrudan sayfa stili görünümüne gitmenizi sağlar)
Formlar
Formlarla çalışmak için her şey: parolaları göster, form bilgilerini göster, form yöntemlerini dönüştür (GET »POST ve tersi) ve çok daha fazlası. Form alanlarının otomatik olarak doldurulması için kullanışlı bir "Form Alanlarını Doldur" işlevi (örneğin, şifreleri hatırlama işlevi devre dışı bırakıldığında bir siteyi test ederken. Aksi takdirde, bu paragrafta yararlı bir şey görmüyorum.
Görüntüler
Burada resimleri devre dışı bırakmak için kullanışlı bir özellik vardır - sitenizin resimler olmadan nasıl göründüğünü görmek için. Resimler daire içine alınabilir, boyutları gösterilebilir, alt nitelikler gösterilebilir.
Bilgi
Bu menüde çok fazla seçenek var. Sayfada sınıf ve id özniteliklerini görüntüleme işlevi yararlı olabilir. Ek olarak, sayfada kullanılan renkler hakkında hızlı bir şekilde bilgi almak için "Renk Bilgilerini Görüntüle" öğesi ilginçtir. "Belge boyutunu görüntüle" - sayfa boyutunu görüntüleyin. Yanıt Başlıklarını Görüntüle - sayfa başlıklarını görüntüleyin.
Çeşitli
En sık kullanılan işlev önbelleği temizlemektir. Ayrıca, "Sayfa cetveli" - bir cetvel, "Sayfa Büyüteci" - bir büyüteç ve "Çizgi kılavuzları" - şablonu kırpmak için yararlı olabilecek birkaç satır işlevleri vardır.
anahat
Sayfanın farklı öğelerinin seçimi - tablolar, başlıklar, bağlantılar, çerçeveler, bloklar. Yeniden boyutlandırma, tarayıcı penceresini herhangi bir standart ekran uzantısına uyacak şekilde yeniden boyutlandırmanıza olanak tanır. Araçlar, burası sayfa doğrulama özelliklerinin depolandığı yerdir. Hem yerel hem de harici. HTML, CSS ve diğer doğrulamalara kolay ve hızlı erişim. HTML'yi doğrulamak için CTRL + SHIFT + H klavye kısayolunu kullanabilirsiniz.
Kaynağı Görüntüle
Kaynak kodunu görüntüleyin. Görüntüleme yeteneği harici uygulama oluşturulan kodu görüntüleme.
Ben en çok sağ köşedekini beğendim. Hızlı bir HTML, CSS doğrulayıcı ve JavaScript hata göstergesidir. Sorun yoksa - simge yeşildir ve sorun varsa - kırmızıdır.
Internet Explorer Geliştirici Araç Çubuğu
8.0'dan beri hata ayıklama bu tarayıcıda zaten yerleşiktir. tarafından kolayca denir F12 tuşu... Doğru, 90'ların programı kadar sefil.
Ancak bu tarayıcı için çok daha havalı bir araç var, sözde Internet Explorer Geliştirici Araç Çubuğu bağlantıdan indirilebilir.
Görünüşe göre, bu araç çubuğu elbette bir ateş böceği gibi görünüyor, ancak ne yazık ki henüz olgunlaşmadı. Öte yandan, firebug'ın sahip olmadığı bazı özelliklere sahip olmasına rağmen. Internet Explorer Geliştirici Araç Çubuğu'nu bir tür Firebug melezi olarak adlandırırdım ve FireFox WEB Geliştiricisi Araç çubuğu'a.
Firebug'da olduğu gibi, basit bir tıklama ile bir elemanı incelemek mümkündür. Ancak, dolguları ve kenar boşluklarını hemen görebilirsek, böyle bir olasılık yoktur.
Ayrıca, Internet Explorer Geliştirici Araç Çubuğu, Firebug'un yaptığı gibi öğe ağacını dinamik olarak güncellemez. Yani js kullanarak sayfada bir şeyi değiştirirsek, bu araç çubuğunu kullanarak hiçbir şey görmeyeceğiz.
Mutlu olunacak bir şey, anında CSS'yi değiştirmektir ( kolay yol neyin hackleneceğini bulun :), CSS ve görüntüleri devre dışı bırakma yeteneği, önbelleği hızlı bir şekilde temizleme ve çerezlerle oynama yeteneği, doğrulamaya hızlı erişim.
En iyi yanı: Damlalık kullanarak sayfadan herhangi bir rengi elde etmenizi sağlayan yerleşik bir renk seçici vardır. (ff için ayrı bir ColorZilla eklentisi vardır).
Internet Explorer için Hata Ayıklama Çubuğu
Internet Explorer için DebugBar, belirtilen bağlantıdan indirilebilir.
Kendi yolunda ilginç bir uzantı. Tarayıcıya ek bir panel olarak yüklendi:
Bir nedenden dolayı yerleşik bir arama motoru, bir damlalık, pencerenin boyutunu değiştirme yeteneği ve yine bir nedenden dolayı bir arkadaşına sabun için bir sayfa gönderme yeteneği var. Her ne kadar faydalı olabilir. Ama bu fırsatı değerlendiremedim.
Ayrıca bir müfettiş var:
Geliştiriciler, tıklayarak veya üzerinde gezdirerek pişirme yöntemini beğenmediler: daha ilginç bir şey buldular. DebugBar'da, artı işaretini ağaçta görmek için istediğiniz öğeye sürüklemeniz gerekir. CSS düzenleme imkanı yoktur. Ancak bir doğrulayıcı ve yerleşik bir js konsolu var.
Ve ayarlara girerseniz, şunu bulabilirsiniz:
Ve komik ve üzgün.
Geliştirici Araç Çubuğunun sekizinci gezgine yerleştirileceği biliniyor. Üçüncü noktada açıklanana benzer olacak, ancak umarım daha iyi olacaktır.
Opera için DragonFly hatalarını ayıklayın
DragonFly, 9.5 sürümünden beri Opera'da yerleşiktir, dolayısıyla yüklemeniz gerekmez. Dragonfly'ı etkinleştirmek için Araçlar → Gelişmiş → Geliştirici Araçları'na gidin. Ve İngilizce ise, Araçlar → Gelişmiş → Geliştirici Araçları.
DragonFly'ın Alpha2 aşamasında olduğu konusunda sizi hemen uyaracağım, bu onun birçok hatasını açıklıyor.
Liste özellikleri:
- DOM denetçisi;
- İncelemek için tıkla (yine, FireFox'taki gibi kenar boşlukları görmeyeceğiz);
- düzenleme;
- Hata konsoluna hızlı erişim.
DF, bir çerçevede ayrı bir sayfa gibi bir şeydir. Açarsanız tüm sekmelere açılır (firebug'a benzemez). Bu nedenle, bir elemanı incelemeden önce, görüntülemek istediğimiz sayfayı listeden seçmeliyiz.
Ne yazık ki, burada ve Internet Explorer Dav Araç Çubuğu'nda dinamik olarak oluşturulmuş öğeler görüntülenmez. Ve genel olarak, sayfayı incelediğimizde hiçbir JavaScript tetiklenmez: bağlantılara ve düğmelere tıklanmaz. Umarım DragonFly piyasaya sürüldüğünde tüm bu olasılıkları göreceğiz.
Safari'de WEB Denetçisinde Hata Ayıklama
Tarayıcı hakkında ne olduğunu hemen söyleyeceğim Safari bilgi ıslık çaldı, bu yüzden dedikleri gibi malzemenin yeterliliği için sorumlu değilim.
Safari menüsündeki "Geliştirme" öğesini etkinleştirmek için, ilgili öğeyi ayarlarda ("Ek" sekmesi) etkinleştirmelisiniz:
"Geliştirme" menüsünde aşağıdaki işlevler bizim için kullanılabilir:
WEB denetçisine daha yakından bakalım:
Varsayılan olarak denetçi HTML görünümünde açılır. Ancak DOM görüntüleme moduna geçirilebilir. Bunun için üst tablada şalter bulunmaktadır. Denetçideki bir öğenin üzerine geldiğinizde, sayfanın kendisinde vurgulanacaktır. FireBug ile yapamadığınız gibi, anında girintiyi, değişiklik işaretlemesini veya CSS'yi göremez veya DOMe'deki dinamik değişiklikleri anında göremezsiniz. Ama görüyorsun, çok sevimli görünüyor.
Tarayıcı penceresinde denetçi ile çalışmak isterseniz, sol alt köşedeki butona tıklayabilirsiniz.
Safari'de bile "Ağ zaman çizelgesi" gibi bir işlev mevcuttur (denetçideki "Ağ" düğmesi):
Dosyaların ne zaman ve ne kadar süreyle yüklendiğini açıkça görebilirsiniz. Ayrıca istek başlıklarını da görüntüleyebilirsiniz, ancak ne yazık ki içeriğin kendisini görüntüleyemezsiniz.
Google Chrome'da Geliştiriciler için Hata Ayıklama
Lame gelişmiş bir biçimde doğdu ve şimdilik eğrileri olsa da, geliştiriciler için hala araçları var.
- DOM Denetçisi;
- Javascript hata ayıklayıcı;
- JavaScript konsolu.
Herhangi bir elemanı incelemek için üzerine tıklamanız gerekir. sağ tık ve bağlam menüsü"Öğe kodunu görüntüle"yi seçin:
İşlev, Safari'dekiyle aynıdır: öğeler üzerine gelindiğinde vurgulanır, ancak CSS ve HTML düzenlemesi kullanılamaz, DOM'deki değişiklikler izlenmez. Bu sadece, denetçiyi tarayıcı penceresine eklemesi gereken sol alt köşedeki düğme çalışmıyor.
"Kaynaklar" sekmesinde aşağıdakileri görebiliriz:
Safari ölçeğinden biraz farklı. Bu şemadaki yarı saydam renkler, ilgili dosya boyutlarını temsil eder ve tam renk, indirme sürelerini temsil eder. Öyle ya da böyle, Chrome'un bu bölümünün tamamlanmaktan uzak olduğu aşikar.
Bu yazıda en ünlü tarayıcı uzantılarını ve yerleşik araçları ele aldım.
Başkaları da var, örneğin:
- Internet Explorer WEB Geliştirme Yardımcısı - iyi bir yardımcı ASP.NET geliştiricileri için (Internet Explorer);
- WEB Geliştirici Araç Çubuğu - Internet Explorer ve FireFox için araç çubuğu. birkaç tane var faydalı fonksiyonlar;
- WEB Erişilebilirlik Araç Çubuğu - Internet Explorer için araç çubuğu. İlginç bir şey yok.
Bahsetmediğim ama değecek eklemeler varsa veya bahsi geçen uzantılarda kaçırdığım işlevler varsa yazın.
Sağlığınız için kullanın!
HTML yazmak harikadır, ancak bir şey çalışmadığında hatanın nerede olduğunu nasıl bilebilirsiniz? Bu makalede, HTML hatalarını bulmanıza ve düzeltmenize yardımcı olacak çeşitli araçlar açıklanmaktadır.
Hata ayıklama korkutucu değil
Bir kod yazdığınızda, hata yaptığınız bir an gelene kadar genellikle her şey yolunda gider. Yani kodunuz çalışmıyor veya istediğiniz gibi çalışmıyor. Bozuk bir Rust programını derlemeye çalışırsanız, derleyici bir hata verecektir:
V bu durumda, hata mesajının anlaşılması nispeten kolaydır - "sonlandırılmamış çift alıntı dizesi". (Merhaba dünya! "); Çift alıntının eksik olduğunu fark edeceksiniz. Elbette, kodunuz büyüdükçe hata mesajlarını anlamak çok daha zorlaşabilir ve en basit durumlar bile göz korkutucu görünebilir. Rust hakkında hiçbir şey bilmeyenler için.
Ama hata ayıklamaktan korkma! Herhangi bir kodu rahatça yazmak ve hatalarını ayıklamak için dili ve araçlarını anlamanız gerekir.
HTML ve hata ayıklama
HTML'yi anlamak Rust kadar zor değil. Tarayıcı onu ayrıştırmadan ve sonucu görüntülemeden önce HTML başka bir biçimde derlenmez (yorumlanır, derlenmez). HTML öğelerinin sözdizimi, Rust, JavaScript veya Python gibi "gerçek programlama dillerinden" çok daha açıktır. Tarayıcıların HTML'yi daha fazla okuma şekli hoşgörülü kodlarını daha katı yorumlayan programlama dillerinden daha fazla. Bu hem kötü hem de iyi.
tolerans kodu
Peki hoşgörülü ne anlama geliyor? Genel anlamda, kodunuzu bozduğunuzda karşılaşacağınız iki tür hata vardır:
- Sözdizimi hataları: Bunlar, yukarıdaki Rust örneğinde olduğu gibi yazım hatalarıdır. Dilin sözdizimine aşina olduğunuz ve hata mesajlarının ne anlama geldiğini bildiğiniz sürece, bunları düzeltmek genellikle kolaydır.
- mantık hataları: Bunlar, sözdizimi doğruysa, ancak kod amaçlanan amacını yerine getirmiyorsa, yani program doğru şekilde çalışmadığında ortaya çıkan hatalardır. Bunları düzeltmek sözdizimsel olanlardan daha zordur, çünkü nerede yanlış yaptığınızı gösteren hiçbir mesaj görüntülenmez.
HTML, sözdizimi hatalarından etkilenmez, çünkü tarayıcı, sözdizimi hataları mevcut olsa bile sayfaların görüntülenebilmesi anlamında, kodu toleranslı bir şekilde okur. Tarayıcıların, yanlış yazılmış işaretlemeyi yorumlamak için yerleşik kuralları vardır ve aksini kastetmiş olsanız bile bir şeyi çalıştırabilirsiniz. Bu gerçek bir sorun olabilir!
bir notta: HTML, toleransla okunabilir, çünkü web ilk ortaya çıktığında, insanların kod yanlış olsa bile içerik yayınlamasına izin verilmesine karar verildi, çünkü bu, sözdiziminin tamamen doğru olduğundan emin olmaktan çok daha önemlidir. Yeni başlayanlarla sıkı sıkıya bağlı olsaydı, web şimdi bu kadar popüler olmazdı.
Aktif Öğrenme: Tolerans Kodunun Tanıtımı
HTML kodu toleransının doğasını keşfetme zamanı.
- İlk olarak, hata ayıklama örneğimizi indirin ve yerel olarak kaydedin. Bu demo, keşfetmek üzere olduğumuz hatalarla kasıtlı olarak yazılmıştır.
- Ardından, bir tarayıcıda açın. Bunun gibi bir şey göreceksiniz:
- Belge şu anda pek iyi görünmüyor; Koda bir göz atalım ve nedenini öğrenelim (Yalnızca belgenin gövdesi gösterilir):
HTML hata ayıklama örnekleri
HTML'de hatalara ne sebep olur?
- Kapatılmamış öğeler: Bir öğe düzgün kapatılmazsa etkisi istemediğiniz alanlara yayılabilir.
- Kötü iç içe yerleştirilmiş öğeler: Öğeleri düzgün şekilde yerleştirmek, kodun doğru şekilde çalışması için de çok önemlidir. kuvvetli güçlü vurgulanmış? bu nedir?
- Kapatılmamış nitelikler: Başka bir yaygın HTML sorunu kaynağı. Bir örneğe bakalım: Mozilla ana sayfasına bağlantı
- Kapatılmamış öğeler: Bir öğe düzgün kapatılmazsa etkisi istemediğiniz alanlara yayılabilir.
- Sorunları ele alalım:
- Sahip olmak параграфа!} ve hiçbir etiket kapalı değildir. Yukarıdaki resimde, tarayıcının bir öğenin nerede bitip diğerinin nerede başladığını anlaması kolay olduğundan, işaretlemenin etkilenmediğini görebilirsiniz.
- Birincisi) içeriğinin büyük önem, ciddiyet veya aciliyet taşıdığını belirtir. Tarayıcılar genellikle içeriği kalın olarak görüntüler. "> öğenin ayrıca bir bitiş etiketi yoktur. Elemanın nerede bitmesi gerektiğini söylemek zor olduğu için bu daha problemlidir. Aslında, kalan metnin tamamı kalındı.
- Sonraki kısım yuvalama kurallarını bozar: kuvvetli güçlü vurgulanmış? bu nedir?... Bu durumda, yukarıda açıklanan nedenle kodun yorumlanması da zordur.
- href özelliğinde kapanış çift tırnak işareti eksik. Bu büyük bir soruna neden oldu - bağlantı hiç yeniden oluşturulmadı.
- Şimdi tarayıcının orijinal belge işaretlemesinin aksine kendi işaretlemesini nasıl oluşturduğunu görelim. Bunu yapmak için geliştirici araçlarını kullanacağız. Geliştirici Araçlarına aşina değilseniz, Tarayıcı Geliştirme Araçlarına Gözatmak için birkaç dakikanızı ayırın.
- DOM denetçisinde, yeni işaretlemenin nasıl oluşturulduğunu görebilirsiniz:
- DOM denetçisini kullanarak, tarayıcının HTML hatalarımızı nasıl düzeltmeye çalıştığını görmek için kodumuzun ayrıntılarına bir göz atalım (Firefox'ta göz atıyoruz; başka bir modern tarayıcı aynı sonuçları vermelidir):
- Paragraflar ve liste öğeleri, kapanış etiketleri ile alınır.
- elemanın nerede olduğu belli değildi. kapatmak zorundaydı, bu yüzden tarayıcı her bir metin bloğunu kendi güçlü etiketleriyle belgenin en altına kadar sardı!
- Hatalı yerleştirme, tarayıcı tarafından şu şekilde düzeltildi: kuvvetli güçlü vurgulanmış? bu nedir?
- Eksik çift tırnak içeren bağlantı kalıcı olarak kaldırıldı. Listedeki son öğe şöyle görünecek:
- Kapatılmamış nitelikler: Başka bir yaygın HTML sorunu kaynağı. Bir örneğe bakalım:
HTML doğrulama
Yukarıdaki örnekten, HTML'nin geçerliliğini kontrol etmeye değer olduğu açıktır. Yukarıdaki basit örnekte, tüm kodu gözden geçirip hataları bulabilirsiniz, peki ya devasa, karmaşık sayfalar?
En iyi seçeneğiniz, sayfayı bir işaretleme doğrulama hizmetiyle doğrulamaktır. HTML, CSS ve diğer web teknolojilerinin özellikleriyle ilgilenen bir kuruluş olan W3C tarafından oluşturuldu ve sürdürüldü. Hizmet, HTML'nizi kontrol edecek ve içindeki hatalar hakkında bir rapor oluşturacaktır.
HTML, bir dosya yükleyerek veya basitçe sayfaya kopyalayarak URL'de kontrol edilebilir.
Aktif Öğrenme: Bir HTML Belgesini Doğrulama
- İşaretleme doğrulama hizmetini bir tarayıcıda açın.
- Doğrudan Girişle Doğrula moduna girin.
- Tüm belge kodunu (yalnızca gövdeyi değil) kopyalayın ve giriş için yerine yapıştırın.
- basmak Kontrol etmek.
Hataların ve diğer bilgilerin bir listesini göreceksiniz.
Hata mesajlarıyla çalışma
Mesajların ne anlama geldiği genellikle hemen anlaşılır, ancak bazen sorunun ne olduğunu anlamaya çalışmanız gerekir. Şimdi tüm hataları gözden geçireceğiz ve ne anlama geldiklerini analiz edeceğiz. Mesajların, hataları bulmayı kolaylaştırmak için bir satır ve bir kod sütunu içerdiğini unutmayın.
- "Bitiş etiketi li ima edildi, ancak açık öğeler vardı" (2 örnek): Tarayıcı nerede olması gerektiğini tahmin etmesine rağmen, açık bir bitiş etiketi yok. Mesaj, bitiş etiketinin beklendiği yerden sonraki satırı gösterir, ancak doğru yeri bulacaksınız.
- "Güçlü kapatılmamış öğe": Bu çok basit bir hatadır - öğe), içeriğinin büyük önem, ciddiyet veya aciliyet olduğunu gösterir. Tarayıcılar genellikle içeriği kalın olarak görüntüler. "> kapatılmaz ve mesaj doğrudan açılış etiketine işaret eder.
- "Bitiş etiketi güçlü, iç içe geçme kurallarını ihlal ediyor": Öğe yanlış iç içe yerleştirilmiş - bu düzeyde eşleşen bir başlangıç etiketi yok.
- "Bir öznitelik değerinin içindeyken dosyanın sonuna ulaşıldı. Etiket yoksayılıyor": Şifreli mesaj. Gerçek şu ki, bir yerde (büyük olasılıkla belgenin sonunda) bir öğe özelliği yanlış yazılmıştır ve dosyanın sonu bu özelliğin içinde kalmıştır. Bağlantı tarayıcıda görünmüyor - büyük olasılıkla sorun onun yanında.
- "Dosya sonu görüldü ve açık öğeler var": Dosya sona erdi, ancak bazı öğeler kapatılmadı. Mesaj dosyanın sonunu gösterir, bu durumda örnek: Mozilla ana sayfasına bağlantı kapalı değil ↩