2012-10-10 12 views
24

Sonsuz döngüde veya özyinelemeli aramalarda olduğunuzda, temel olarak tarayıcı herhangi bir şeye (Chrome ya da FF'de) yanıt vermiyor. Günlükleri göremezsiniz, hata ayıklayıcıya giremezsiniz, hatta konsolu açamazsınız. Tarayıcı sadece donuyor. Bu çok sinir bozucu. Görünüşe göre, burada oturup başımı kaşımayan hiçbir şey yapamam ... Bunu çözmek için herkes ışık tutabilir mi? deneyebilirsinJavascript'te sonsuz döngülere ve yinelemeli çağrılara giderken javascript nasıl hata ayıklanır?

+3

ayıklayıcısında kesme noktası ayarlamak? – PhonicUK

+0

@PhonicUK çalışmıyor ..... – lkahtz

cevap

44

bir püf Chrome açıkta Web geliştirici araçlarına sahip ve Tarayıcı görünüşte kapatırsa Pause vurmak denemektir. O zaman şu anda yürütmekte olduğu çizgide kırılmalıdır. Biraz dışarı çıkarken, bunun altından geçmelisin.

bildiğiniz (veya şüpheli) varsayarsak Sınırsız bir döngü böyle kodu ekleyebilirsiniz olur fonksiyonu:

var calls = 0; 
function iSuspectToBeLoopingInfititely() { 
    calls += 1; 
    if (calls > 100) { debugger; } 
} 

yöntem 100 kez denilen edildikten sonra bu Chrome'da JavaScript debugger duracaktır. Not: Geliştirici Araçları penceresinin açık olması durumunda Chrome yalnızca debugger; çağrılarını kesecektir.

+1

Teşekkürler, @Tigraine. Bu çalışıyor! – lkahtz

+2

Güzel cevap. 'Duraklat' düğmesini kullanmayı asla düşünmedim (yüksek işlemci yüküne neden olan hatayı yeniden üretmek zordu) –

+2

Bu cevaba geri dönmeye devam ediyorum. Saniyede infaz sayısı # başına düşen keyfi saatlerin ayarlanması ve ihlal eden herhangi bir işlevin kırılması, tarayıcı geliştirme araçlarına mükemmel bir ekleme olacaktır. – Barney

0

Chrome'da sorunlar yaşadım, 'Hata ayıklayıcıda duraklatıldı' tarayıcı penceresini görebiliyordum ancak Chrome'un bir döngüde olduğundan bu yana nerede karıştığını göremedim ... Firefox'ta da alma farkına vardı. uzun ve sonra bir pop-up 30 saniye sonra dosya ve genel hat # donmuş üzerinde daha fazla hata ayıklama yardımcı olur ve bu alan etrafında kesme noktaları belirten 1 dakika sonra gelir.

-2

Aşağıdaki kodu kullanarak sonsuz bir döngüyü durdurabilirsiniz. Döngü çalıştırılmadan önce

debugger;

İlgili konular