Chrome'daki koddan bir JavaScript kesme noktası nasıl ayarlanır?


687

Chrome hata ayıklayıcısını kodla bir satıra veya başka bir şey gibi yorum etiketi kullanarak kırmaya zorlamak istiyorum console.break().


46
debugger;araç çubuğundaki düzenli kesme noktalarını denediniz mi veya sadece normal kesme noktalarını mı kullandınız?
diaho

geliştirici araçlarında komut dosyası izleyicisini kullanmak yerine kodun kendisinden kesme noktaları ayarlamak mı demek istiyorsunuz?
Faris M


9
Kopya değil. "Chrome'da" veya "kodda" iki farklı şeydir ve bu soru birçok XHR dışı senaryo için geçerlidir. Evet Diğer sorudaki cevaplardan 1 tanesi bu soruya cevap veriyor, ancak diğerleri geçerli değil. Kelimenin tam anlamıyla "kod krom javascript kesme noktası ayarlayın" googled ve bu ilk sonuç ve diğer soru bile ilk sayfada değil.
AaronLS

Yanıtlar:


1161

debugger;Kodunuz içinde kullanabilirsiniz . Geliştirici konsolu açıksa, yürütme kesilir. Firebug'da da çalışır.


8
Güzel bir numara, hata ayıklayıcıyı birkaç saniye sonra tetiklemektir:setTimeout(function(){debugger;}, 3000);
Shahar

30
Zamanlayıcı hilesi yaygın bir uygulama mıdır? Doğrulama / gerekçesi?
Justus Eapen

4
Bu çok yardımcı. Not ayrıca debugger;tüm büyük tarayıcılarda desteklenir. Daha fazla bilgi için: w3schools.com/jsref/jsref_debugger.asp
ScottyG

16
@ScottyG MDN daha az parlak, daha kullanışlı: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
jpaugh

@JustusEapen Sorun Javascript tek iş parçacıklı olmasıdır, bu yüzden çalışan kodu kesemez.
Vitruvius

27

Bir düğme tıklama dinleyicisi ayarlayın ve debugger;

Misal

$("#myBtn").click(function() {
 debugger;   
});

gösteri

http://jsfiddle.net/hBCH5/

JavaScript'te hata ayıklama kaynakları


1
Bu, tıklama işleyicisinde bir kesme noktası belirler, muhtemelen OP'nin istediği şey değildir
ᆼ ᆺ ᆼ 10:15

@PeterV Hata ayıkladığım bir kod bloğuna yakın bir yere kodumu açmaya çalışsaydım yararlı olurdu ... ama her zaman hata ayıklamak istemedim ... ama evet , sadece hata ayıklayıcıyı açmak için ... o zaman bunun için bir tuşa basın.
Armstrongest

27

Ayrıca , çağrıldığında debug(function)kırmak için de kullanabilirsiniz function.

Komut Satırı API Referansı: hata ayıklama


2
Çok güzel - şu anda yalnızca Chrome gibi görünüyor, ancak bu benim birincil platformum. Şimdi sadece küresel hata ayıklama bayrağı "hata ayıklama" çağırmayı durdurmak için hatırlamak gerekir ...
brichins

Chrome Hata Ayıklayıcı Komut Satırı API Referansı aslında bilmediğim diğer bazı yararlı şeyleri içeriyor. Teşekkürler!
Peter T.


8

"Komut Dosyaları" sekmesinde kodunuzun bulunduğu yere gidin. Satır numarasının solunda simgesini tıklayın. Bu bir kesme noktası belirler.

Ekran görüntüsü:

breakpoint in chrome ekran görüntüsü

Daha sonra kesme noktalarınızı sağ sekmede takip edebilirsiniz (ekran görüntüsünde gösterildiği gibi).


41
Bu soruya cevap vermiyor, kodda
robertc

39
xn .: "İşte 0 oyla küçük bir bebekken, cevabımın bir resmi. Şimdi hepsi büyüdü."
AaronLS

3
Ajax çağrısı ile bir JS komut dosyası yüklerseniz, burada gösterilmez, dolayısıyla kodda bir kesme noktasına ihtiyaç vardır.
Petruza

@FlorianMargaine, Artık Komut Dosyası sekmesi yok. Lütfen resmi güncelleyin.
Pacerier

Drupal gibi bazı çerçevelerde JS, önbellek bozan bir sorgu dizesi soneki eklenir. Önbellekleri temizlerseniz, genellikle önceki yükte ayarladığınız kesme noktalarını silebilen bu son ek güncellenir.
Nick

7

debugger EcmaScript tarafından ayrılmış bir anahtar kelime ve ES5'ten beri isteğe bağlı anlambilim

Sonuç olarak, yalnızca Chrome'da değil, aynı zamanda Firefox ve Node.js aracılığıyla da kullanılabilirnode debug myscript.js .

Standart diyor :

Sözdizimi

DebuggerStatement :
    debugger ;

semantik

DebuggerStatement üretiminin değerlendirilmesi, bir uygulamanın bir hata ayıklayıcı altında çalıştırıldığında bir kesme noktasına neden olmasına izin verebilir. Bir hata ayıklayıcı yoksa veya etkin değilse, bu ifadenin gözlemlenebilir bir etkisi yoktur.

Üretim DebuggerStatement: debugger; aşağıdaki gibi değerlendirilir:

  1. Uygulama tanımlı bir hata ayıklama olanağı varsa ve etkinleştirilirse,
    1. Uygulama tanımlı bir hata ayıklama eylemi gerçekleştirin.
    2. Sonuç, bir uygulama tanımlı Tamamlama değeri olsun.
  2. Başka
    1. Sonuç olsun (normal, boş, boş).
  3. Sonuç.

ES6'da değişiklik yok.


3

Bu mümkündür ve bunu yapmak isteyebileceğiniz birçok neden vardır. Örneğin, sayfanın yüklenmesinin başlangıcına yakın olan ve krom geliştirici araç setinin (veya kundaklama çubuğunun) doğru yüklenmesini engelleyen bir javascript sonsuz döngüsünde hata ayıklama.

Bkz.

http://www.laurencegellert.com/2012/05/the-three-ways-of-setting-breakpoints-in-javascript/

ya da kodunuza gerekli test noktasında hata ayıklayıcı kelimesini içeren bir satır ekleyin.


3

Kesme noktası: -

kesme noktası yürütmeyi durdurur ve JavaScript değerlerini incelemenize izin verir.

Değerleri inceledikten sonra kodun yürütülmesine devam edebilirsiniz (genellikle oynat düğmesiyle).

Hata ayıklayıcı: -

Hata ayıklayıcı; JavaScript'in çalışmasını durdurur ve hata ayıklama işlevini çağırır.

Hata ayıklayıcı deyimi yürütmeyi askıya alır, ancak hiçbir dosyayı kapatmaz veya değişkenleri temizlemez.

Example:-
function checkBuggyStuff() {
  debugger; // do buggy stuff to examine.
};


2

JavaScript kodunda hata ayıklamanın birçok yolu vardır. JavaScript ile hata ayıklamak için aşağıdaki iki yaklaşım yaygın olarak kullanılmaktadır

  1. console.log()Tarayıcı konsolundaki değerleri yazdırmak için kullanma . (Bu, kodunuzun belirli noktalarındaki değerleri anlamanıza yardımcı olacaktır)

  2. Hata ayıklayıcı anahtar kelimesi. debugger;Hata ayıklamak istediğiniz konumlara ekleyin ve tarayıcının geliştirici konsolunu açın ve kaynaklar sekmesine gidin.

JavaScript Kodunda hata ayıklamak için daha fazla araç ve yol için, bu bağlantıda W3School tarafından verilmiştir .


1
+1 ve console.log kullanımı da kodunuzu bulmak için yararlıdır, çünkü genellikle dosya / satır # iletinin yanında gösterilir ve kodunuzu hata ayıklayıcıda açmak, kesme noktasını ayarlamak vb. İçin tıklayabilirsiniz.
John Henckel

0

Ben tavsiye etmem debugger;sadece öldürmek ve javascript kodu durdurmak istiyorsanız, çünkü debugger;sadece geçici olarak sizin javascript kodu dondurmak ve kalıcı durdurmak olmaz.

Komutunuzda javascript kodunu düzgün bir şekilde öldürmek ve durdurmak istiyorsanız aşağıdakileri kullanın:

throw new Error("This error message appears because I placed it");

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.