Tarayıcıda kullanılan hata ayıklama teknikleri
(alan.norbauer.com)Tarayıcı hata ayıklayıcısından yararlanma ipuçları
-
Gelişmiş koşullu kesme noktaları
- Yan etkileri olan ifadeler kullanarak koşullu kesme noktalarının işlevini genişletme
- Logpoint/tracepoint ile yürütmeyi durdurmadan konsola log kaydedebilme
- Çalışma sayısını saymak için
console.countkullanma - Başlıca tarayıcılar logpoint/tracepoint'i destekler (Mayıs 2020 itibarıyla)
-
Watch penceresinden yararlanma
- Watch penceresinde
console.logkullanılabilir - DOM değişimi anında ifade çalıştırmak için DOM değişim kesme noktası ayarlayıp watch ifadesi ekleme
- Watch penceresinde
-
Çağrı yığınını izleme
- Fonksiyon çağrı yığınını izleyerek uyuşmayan çağrıları bulma
- Çağrı yığınını kontrol etmek için koşullu kesme noktasında
console.tracekullanma
-
Program davranışını değiştirme
- Program davranışı tarayıcı içinde anında değiştirilebilir
- Fonksiyon parametrelerini override ederek davranışı ayarlama
-
Basit performans profilleme
- Konsol zamanlama API'sini kullanarak kod çalışma süresini ölçme
- Süre ölçümü için
console.time('label')veconsole.timeEnd('label')kullanma
-
Fonksiyon arity'sinden yararlanma
- Kesme noktasını yalnızca belirli sayıda argümanla çağrıldığında etkinleştirme
- Fonksiyon çağrılarında argüman sayısı uyumsuzluklarını bulmak için kullanma
-
Zamandan yararlanma
- Sayfa yüklendikten belirli bir süre sonra kesme noktasını etkinleştirme
- Kesme noktasını belli bir süre boyunca atlayıp yalnızca sonrasında etkinleştirme
-
CSS'ten yararlanma
- Hesaplanmış CSS değerine göre kesme noktasını etkinleştirme
-
Yalnızca çift sayılı çağrılarda durdurma
- Kesme noktasını yalnızca çift numaralı çalıştırmalarda etkinleştirme
-
Örnekleme yoluyla durdurma
- Kesme noktasını yalnızca yürütmenin rastgele örneklerinde etkinleştirme
-
Belirli satırda durdurmama
- Belirli bir satırda durmamak için "Never Pause Here" seçeneğini kullanma
-
Otomatik instance ID atama
- Her sınıf instance'ına otomatik olarak benzersiz bir ID atama
-
Programatik olarak açıp kapatma
- Koşullu kesme noktasını programatik olarak açıp kapatmak için global boolean kullanma
-
monitor()sınıf çağrısı- Sınıf metodu çağrılarını izlemek için Chrome'un
monitorkomutunu kullanma
- Sınıf metodu çağrılarını izlemek için Chrome'un
-
Fonksiyon çağırma ve hata ayıklama
- Konsolda
debuggerçağırdıktan sonra hata ayıklamak için fonksiyonu çağırma
- Konsolda
-
URL değiştiğinde yürütmeyi durdurma
- Tek sayfa uygulamalarında URL değişmeden önce yürütmeyi durdurma
-
Özellik okuma hata ayıklaması
- Nesnenin bir özelliği her okunduğunda kesme noktasını etkinleştirme
-
copy()kullanımı- Tarayıcıdan doğrudan panoya bilgi kopyalamak için
copy()konsol API'sini kullanma
- Tarayıcıdan doğrudan panoya bilgi kopyalamak için
-
HTML/CSS hata ayıklama
- HTML/CSS sorunlarını teşhis etmek için JS konsolunu kullanma
- JS devre dışıyken DOM'u inceleme
- Koşullu olarak görünen DOM öğelerini inceleme
- DOM snapshot kaydetme
- Odaklanmış öğeyi izleme
- Kalın yazı tipine sahip öğeleri bulma
- O anda seçili öğeye referans verme
- Olayları izleme
GN⁺ görüşü
Bu yazının en önemli yanı, geliştiricilerin tarayıcı hata ayıklayıcısını kullanarak kodu daha verimli biçimde hata ayıklayıp sorun çözebilmesi için çeşitli teknikler ve ipuçları sunmasıdır. Bu bilgiler yazılım geliştiricileri için çok yararlıdır; özellikle karmaşık hataları izlerken veya performans sorunlarını çözerken zaman kazandırdığı için ilgi çekicidir.
1 yorum
Hacker News görüşleri
Tarayıcıya yerleşik hata ayıklama araçlarının gelişimi
debuggerifadesinin kullanımıdebugger;ifadesini kullanmak, Chrome debugger'daki özyinelemeli stack'i yenmenin tek yolu.NodeJS backend hata ayıklamanın zorlukları
pdb.set_trace()/IEx.pry()kullanıyorum.console.loghata ayıklamaya geri dönmek zorunda kaldım ve bu oldukça ilkel hissettirdi.Werkzeug önerisi
IIFE'nin yerel değişkenlerine erişim yöntemi
UI string'leri üzerinden hata ayıklama yöntemi
Koşullu breakpoint kullanarak hata ayıklama
{configOption: true}ifadesini{get configOption() { debugger; return true; }}biçimine dönüştürmenin bir yolu soruluyor.Chrome'a özgü 'Monitor Events for Element' özelliği
queryObjectsAPI'sinin yokluğuqueryObjectsAPI'sinden bahsediliyor.queryObjects(Function)kullanılarak heap'teki tüm fonksiyonların listesi alınabiliyor.İzleme değişkenlerini kullanmanın zorluğu