Saat melangkah melalui kode JavaScript di debugger Google Chrome, bagaimana cara saya menghentikan eksekusi skrip jika saya tidak ingin melanjutkan? Satu-satunya cara saya temukan adalah menutup jendela browser.
Menekan "Reload this page" menjalankan sisa kode dan bahkan mengirimkan formulir seolah-olah menekan F8 "Lanjutkan".
PEMBARUAN :
Saat menekan F5 (Refresh) saat skrip dijeda:
- Google Chrome (v22) menjalankan skrip. Jika skrip mengirimkan permintaan HTTP, respons HTTP untuk permintaan itu ditampilkan. Halaman asli tidak di-refresh.
- IE 9 membeku. Namun IE memiliki opsi "Stop Debugging" yang, ketika ditekan (asalkan Anda tidak menekan F5 sebelumnya), terus menjalankan skrip di luar debugger.
- Firebug berperilaku identik dengan Chrome.
Menutup dan kemudian membuka kembali jendela browser tidak selalu merupakan cara termudah berikutnya karena akan mematikan status sesi browser dan itu mungkin penting. Semua breakpoints Anda juga hilang.
PEMBARUAN (Jan 2014) :
Refresh saat debugging:
- Chrome v31: memungkinkan skrip untuk berjalan dan berhenti pada breakpoints lebih lanjut (tetapi tidak mengirimkan permintaan ajax), lalu menyegarkan.
- IE 11: refresh tidak melakukan apa-apa, tetapi Anda dapat menekan F5 untuk melanjutkan.
- Firefox v26: memungkinkan skrip untuk berjalan tetapi tidak berhenti pada breakpoints lebih lanjut, mengirimkan permintaan ajax, lalu menyegarkan.
Semacam kemajuan!
Menavigasi ke halaman yang sama saat melakukan debug:
- Chrome v31: sama dengan Refresh.
- IE 11: skrip dihentikan, sesi browser baru dimulai (sama seperti menutup dan membuka lagi).
- Firefox v26: tidak ada yang terjadi.
Juga juacala menyarankan solusi yang efektif. Misalnya, jika Anda menggunakan jQuery, menjalankan delete $ dari konsol akan menghentikan eksekusi setelah metode jQuery ditemukan. Saya telah mengujinya di semua browser di atas dan dapat memastikan itu berfungsi.
PEMBARUAN (Mar 2015) :
Akhirnya, setelah lebih dari 2 tahun dan hampir 10 ribu tampilan, jawaban yang tepat diberikan oleh Alexander K. Google Chrome memiliki Task Manager sendiri yang dapat mematikan proses tab tanpa menutup tab itu sendiri, menjaga semua breakpoints dan hal-hal lain tetap utuh.
Saya bahkan pergi sejauh BrowserStack.com untuk mengujinya di Chrome v22 dan menemukan bahwa ini bekerja dengan cara ini bahkan pada waktu itu.
Solusi Juacala masih berguna saat melakukan debugging di IE atau Firefox.
PEMBARUAN (Jan 2019) :
Alat Dev Chrome akhirnya menambahkan cara yang tepat untuk menghentikan eksekusi skrip yang bagus (meskipun agak tersembunyi). Lihat jawaban James Gentes untuk detailnya.
debugger;
ke konsol alat dev dan itu akan segera memasukkan sesuatu ke debugger dan menghentikan skrip.Jawaban:
Di Chrome, ada "Pengelola Tugas", dapat diakses melalui Shift+ ESCatau melalui
Anda dapat memilih tugas halaman dan mengakhirinya dengan menekan tombol "Akhiri Proses".
sumber
chrome 48
ini hanya akan TUTUP alat Dev, dan tidak menghentikannya, membukanya kembali, Anda dapat melihat program masih berjalan (tried setInterval()
)Mulai April 2018, Anda dapat menghentikan loop tak terbatas di Chrome :
Perhatikan juga tombol pintas: F8dan Ctrl+\
sumber
body
elemen di sini pada SO, mengatur "istirahat pada -> modifikasi subtree", lalu mengklik di mana saja. Tombolnya terlihat seperti pada screenshot yang saya posting.Salah satu cara Anda dapat melakukannya adalah menjeda skrip, lihat kode apa yang mengikuti di mana Anda saat ini dihentikan, misalnya:
Di konsol, lakukan hal berikut:
Kemudian mainkan skrip: itu akan menyebabkan kesalahan fatal ketika mencoba mengakses
somethingElse
, dan skrip akan mati. Voila, kamu sudah menghentikan skripnya.EDIT: Awalnya, saya menghapus sebuah variabel. Itu tidak cukup baik. Anda harus menghapus fungsi atau objek yang JavaScript coba akses ke properti.
sumber
you have to delete a function or an object
hack jahat seperti itu! (di UI itu akan cocok dengan baik sebagai tombol bunuh semua )Pembaruan 2020 April
Pada Chrome 80, tidak ada jawaban saat ini yang berfungsi. Tidak ada tombol "Jeda" yang terlihat - Anda perlu mengklik lama tombol "Mainkan" untuk mengakses ikon Stop:
sumber
Jika Anda mengalami ini saat menggunakan
debugger
pernyataan,... maka saya pikir halaman akan terus berjalan selamanya sampai runtime js menghasilkan, atau istirahat berikutnya. Dengan asumsi Anda berada dalam mode break-on-error (tombol pause-icon), Anda dapat memastikan istirahat terjadi dengan melakukan sesuatu seperti:
atau mungkin memanggil fungsi yang tidak ada:
(Tentu saja ini tidak membantu jika Anda mencoba untuk menjalankan fungsi, meskipun mungkin Anda dapat menambahkan
throw 1
atau secara dinamisz()
atau semacamnya di panel Sumber, ctrl-S untuk menyimpan, dan kemudian ctrl-R untuk menyegarkan ... ini Namun dapat melewati satu breakpoint, tetapi dapat bekerja jika Anda berada dalam satu lingkaran.)Jika Anda melakukan loop dan berharap untuk memicu
debugger
pernyataan lagi, Anda bisa mengetikthrow 1
saja.Kemudian ketika Anda menekan ctrl-R, lemparan berikutnya akan mengenai, dan halaman akan menyegarkan.
(diuji dengan Chrome v38, sekitar Apr 2017)
sumber
Pertanyaan bagus di sini. Saya pikir Anda tidak dapat menghentikan eksekusi skrip. Meskipun saya belum pernah mencarinya, saya telah menggunakan debugger krom untuk waktu yang cukup lama di tempat kerja. Saya biasanya mengatur breakpoints dalam kode javascript saya dan kemudian saya men-debug bagian dari kode yang saya minati. Ketika saya selesai men-debug kode itu, saya biasanya hanya menjalankan sisa program atau menyegarkan browser.
Jika Anda ingin mencegah agar skrip tidak dieksekusi (mis. Karena panggilan AJAX yang akan dilakukan) satu-satunya hal yang dapat Anda lakukan adalah menghapus kode itu di konsol on-the-fly, sehingga mencegah panggilan tersebut dari dieksekusi , maka Anda dapat mengeksekusi kode yang tersisa tanpa masalah.
Saya harap ini membantu!
PS: Saya mencoba mencari opsi untuk menghentikan eksekusi di beberapa tutorial / panduan seperti yang berikut ini, tetapi tidak bisa menemukannya. Seperti yang saya katakan sebelumnya, mungkin tidak ada opsi seperti itu.
http://www.codeproject.com/Articles/273129/Beginner-Guide-to-Page-and-Script-Debugging-with-C
http://www.nsbasic.com/app/tutorials/TT10.htm
sumber
Mengacu pada jawaban yang diberikan oleh @scottndecker ke pertanyaan berikut , chrome sekarang menyediakan opsi 'nonaktifkan JavaScript' di bawah Alat Pengembang:
...
di kanan atasUntung Anda bisa berhenti dan menjalankan kembali lagi hanya dengan mencentang / tidak mencentangnya.
sumber
Anda dapat melakukannya, tetapi Anda harus menyiapkan kode Anda terlebih dahulu.
Petunjuk untuk menghentikan eksekusi skrip di Google Chrome Dev Tools:
(1) Siapkan kode Anda terlebih dahulu, dengan membuat variabel global :
(2) Di mana pun Anda ingin berhenti, uji nilai variabel ini:
(3) Jeda eksekusi skrip pada atau sebelum baris tes di atas
(4) Beralih ke konsol
(5) Jenis:
(6) Lanjutkan eksekusi skrip. Script akan
return false
ketika menjalankan tes dari langkah (2) di atasCatatan:
(A) Trik ini berfungsi dengan variabel dan objek global, tetapi tidak akan berfungsi dengan variabel lokal. Perhatikan bahwa ini:
newVar = 'never used before';
membuat properti baru dari objek jendela (berfungsi dengan trik di atas), sementara ini:
var newVar = 'never used before';
membuat variabel lokal (TIDAK bekerja dengan trik di atas!)
(B) Jadi, Anda masih dapat menggunakan trik ini dengan kode yang sudah berjalan jika Anda memiliki variabel global atau objek yang akan mengembalikan false jika memiliki nilai yang diberikan.
(C) Dalam keadaan darurat, Anda dapat menggunakan trik juacala dan menghapus elemen dari DOM (pada tab elemen) yang akan menyebabkan kesalahan javascript. Sebagai contoh, misalkan Anda memiliki kode
var cartype = $('#cartype').val();
Jika Anda menghapus elemen dengan ID =cartype
sebelum baris kode itu, maka js akan memecah pada baris itu. Namun, elemen masih akan hilang ketika Anda mencoba menjalankan kembali kode. Trik yang dijelaskan di atas memungkinkan Anda menjalankan dan menjalankan kembali kode iklan tak terhingga.Lebih banyak catatan:
(a) Masukkan breakpoint ke dalam kode: ketik saja
debugger;
sebuah baris dengan sendirinya. Jika DevTools terbuka, skrip akan beralih ke debugger pada saat itu. Jika DevTools tidak terbuka, kode akan mengabaikan pernyataan.(B) Ingin menghindari melompat ke perpustakaan jQuery saat kode debug? Kotak hitam itu. Lihat instruksi blackbox untuk Chrome - atau - untuk Firefox
Terima kasih (silakan kunjungi dan angkat suara):
Javascript Debugging baris demi baris menggunakan Google Chrome
Apakah mungkin untuk mengubah nilai variabel javascript saat debugging di Google Chrome?
sumber
Any place where you may wish to quit, test the value of this variable
Mengerikan! Saya ingin berhenti di mana pun saya melangkah saat ini, saya tidak tahu sebelumnya di mana itu mungkin!Anda dapat menjeda pola XHR yang menurut saya sangat berguna selama men-debug skenario semacam ini.
Misalnya saya telah memberikan breakpoint pada pola URL yang mengandung "/"
sumber
Jika Anda memiliki loop nakal, jeda kode di debugger Google Chrome (kecil "
||
tombol " di tab Sumber).Beralih kembali ke Chrome, buka "Task Manager" ( Shift+ ESC), pilih tab Anda, klik tombol "End Process".
Anda akan mendapatkan pesan Aww Snap dan kemudian Anda dapat memuat ulang ( F5).
Seperti yang telah dicatat oleh orang lain, memuat ulang halaman pada titik jeda sama dengan memulai ulang lingkaran jahat dan dapat menyebabkan penguncian yang tidak menyenangkan jika debugger juga kemudian mengunci (dalam beberapa kasus mengarah ke memulai ulang chrome atau bahkan PC). Debugger membutuhkan tombol "Stop". Nb: Jawaban yang diterima sudah ketinggalan zaman karena beberapa aspeknya sekarang kelihatannya salah. Jika Anda memilih saya, tolong jelaskan :) .
sumber
Buka tab sumber di 'Alat Pengembang', klik nomor baris dalam skrip yang sedang berjalan, ini akan membuat breakpoint dan debugger akan putus di sana.
sumber
Ada banyak solusi yang tepat untuk masalah ini seperti yang disebutkan di atas dalam posting ini, tetapi saya telah menemukan peretasan kecil yang dapat dimasukkan dalam skrip atau disisipkan di konsol Chromes (debugger) untuk mencapainya:
Ini akan menyebabkan eksekusi dijeda ketika Anda menekan
F12
.sumber