javascript - que - ¿Cómo finalizar la ejecución del script al depurar en Google Chrome?
javascript console chrome (10)
Abra la pestaña de fuente en ''Herramientas de desarrollador'', haga clic en un número de línea en una secuencia de comandos que se está ejecutando, esto creará un punto de interrupción y el depurador se romperá allí.
Al pasar por el código JavaScript en el depurador de Google Chrome, ¿cómo termino la ejecución del script si no deseo continuar? La única forma que encontré es cerrar la ventana del navegador.
Al presionar "Volver a cargar esta página", se ejecuta el resto del código e incluso se envían los formularios como si se presionara F8 "Continuar".
ACTUALIZAR :
Al presionar F5 (Actualizar) mientras un guión está en pausa:
- Google Chrome (v22) ejecuta el script. Si el script envía una solicitud HTTP, se muestra la respuesta HTTP para esa solicitud. La página original no se actualiza.
- IE 9 simplemente se congela. Sin embargo, IE tiene una opción "Detener depuración" que, cuando se presiona (siempre que no haya presionado F5 antes), continúa ejecutando el script fuera del depurador.
- Firebug se comporta de forma idéntica a Chrome.
Cerrar y luego volver a abrir la ventana del navegador no siempre es la siguiente manera más fácil porque matará el estado de la sesión del navegador y eso puede ser importante. Todos sus puntos de interrupción también se pierden.
ACTUALIZACIÓN (ene 2014) :
Actualizar mientras se depura:
- Chrome v31: permite que los scripts se ejecuten y se detengan en más puntos de interrupción (pero no envía solicitudes ajax), luego se actualiza.
- IE 11: actualización no hace nada, pero puede presionar F5 para continuar.
- Firefox v26: permite que los scripts se ejecuten pero no se detienen en más puntos de interrupción, envía solicitudes ajax y luego se actualiza.
Tipo de progreso!
Navega a la misma página durante la depuración:
- Chrome v31: igual que Refresh.
- IE 11: los scripts se terminan, se inicia una nueva sesión del navegador (lo mismo que cerrar y abrir de nuevo).
- Firefox v26: no pasa nada.
También juacala sugirió una solución efectiva. Por ejemplo, si está utilizando jQuery, ejecutar delete $ desde la consola detendrá la ejecución una vez que se encuentre cualquier método jQuery. Lo he probado en todos los navegadores anteriores y puedo confirmar que está funcionando.
ACTUALIZACIÓN (marzo de 2015) :
Finalmente, después de más de 2 años y casi 10,000 visitas, Alexander K. dio la respuesta correcta. Google Chrome tiene su propio Administrador de tareas que puede matar un proceso de pestañas sin cerrar la pestaña, manteniendo intactos todos los puntos de interrupción y otras cosas.
Incluso llegué hasta BrowserStack.com para probarlo en Chrome v22 y descubrí que esto funcionaba de esta manera incluso en ese momento.
La solución alternativa de Juacala sigue siendo útil cuando se depura en IE o Firefox.
Buena pregunta aquí. Creo que no puedes terminar la ejecución del script. Aunque nunca lo he buscado, he estado usando el depurador de Chrome durante bastante tiempo en el trabajo. Normalmente establezco puntos de interrupción en mi código de JavaScript y luego depuro la parte del código que me interesa. Cuando termino de depurar ese código, suelo ejecutar el resto del programa o actualizar el navegador.
Si desea evitar que se ejecute el resto de la secuencia de comandos (por ejemplo, debido a las llamadas AJAX que se realizarán), lo único que puede hacer es eliminar ese código en la consola sobre la marcha, evitando así esas llamadas de ser ejecutado , entonces podría ejecutar el código restante sin problemas.
¡Espero que esto ayude!
PD: Intenté encontrar una opción para terminar la ejecución en algunos tutoriales / guías como los siguientes, pero no pude encontrarlo. Como dije antes, probablemente no haya tal opción.
http://www.codeproject.com/Articles/273129/Beginner-Guide-to-Page-and-Script-Debugging-with-C
En Chrome, hay "Administrador de tareas", accesible a través de Shift + ESC oa través de
Menú → Más herramientas → Administrador de tareas
Puede seleccionar su tarea de página y finalizar presionando el botón "Terminar proceso".
En referencia a la respuesta dada por @scottndecker a la siguiente question , Chrome ahora proporciona una opción de "deshabilitar JavaScript" en Developer Tools:
- Vertical
...
en la esquina superior derecha - Configuraciones
- Y en ''Preferencias'', vaya a la sección ''Depurador'' en la parte inferior y seleccione ''Deshabilitar JavaScript''
Lo bueno es que puede detener y volver a ejecutar solo con marcar / desmarcarlo.
La mayoría de las veces estoy buscando detener un bucle o un temporizador que está cambiando elementos en la página y me impide inspeccionarlos ...
La mayoría de las veces usa jQuery, así que solo uso:
eliminar jQuery
Puedes hacerlo, pero primero debes preparar tu código.
Instrucciones para detener la ejecución de scripts en Google Chrome Dev Tools:
(1) Prepare su código primero, creando una variable global :
var devquit=0;
$(document).ready({
//the rest of your code
(2) En cualquier lugar donde desee dejar de fumar, pruebe el valor de esta variable:
//Lotsa code
if (devquit > 0) return false;
(3) Pause la ejecución del script en o antes de la (s) línea (s) de prueba anteriores
(4) Cambiar a la consola
(5) Tipo:
> devquit
0
> devquit=1 <=== only this line is necessary
> devquit
1
(6) Continuar la ejecución del script. La secuencia de comandos return false
cuando ejecuta la prueba del paso (2) anterior
Notas:
(A) Este truco funciona con variables y objetos globales, pero no funcionará con variables locales. Tenga en cuenta que esto:
newVar = ''never used before'';
crea una nueva propiedad del objeto ventana (funciona con el truco anterior), mientras que esto:
var newVar = ''never used before'';
crea una variable local (¡NO funciona con el truco anterior!)
(B) Entonces, aún puede usar este truco con el código que ya se está ejecutando si tiene una variable global o un objeto que devolverá falso si tiene un valor dado.
(C) En un apuro, puede usar el truco de juacala y eliminar un elemento del DOM (en la pestaña de elementos) que causará un error de javascript. Por ejemplo, supongamos que tiene el código var cartype = $(''#cartype'').val();
Si elimina el elemento con ID = cartype
antes de esa línea de código, entonces el js se romperá en esa línea. Sin embargo, el elemento aún faltará cuando intente volver a ejecutar el código. El truco descrito anteriormente le permite ejecutar y volver a ejecutar el código ad infinitum.
Más notas:
(a) Inserte el punto de interrupción en el código: simplemente escriba debugger;
en una línea por sí mismo. Si DevTools está abierto, el script saltará al depurador en ese punto. Si DevTools no se abre, el código ignorará la instrucción.
(b) ¿Desea evitar entrar en la biblioteca jQuery cuando depura código? Blackbox. Consulte las instrucciones de blackbox para Chrome , o para Firefox
Gratitud (por favor visite y vote):
Depuración de JavaScript línea por línea usando Google Chrome
¿Es posible cambiar los valores de la variable JavaScript mientras se depura en Google Chrome?
Si se encuentra con esto al usar la declaración del debugger
,
debugger;
... entonces creo que la página continuará ejecutándose para siempre hasta que ceda el tiempo de ejecución js, o el siguiente salto. Suponiendo que está en el modo de interrupción de error (alternar el icono de pausa), puede asegurarse de que ocurra un descanso haciendo algo como:
debugger;throw 1;
o tal vez llamar a una función inexistente:
debugger;z();
(Por supuesto, esto no ayuda si está tratando de pasar por las funciones, aunque quizás podría agregar dinámicamente un throw 1
o z()
o algo así en el panel Sources, ctrl-S para guardar, y luego ctrl-R para actualizar ... esto, sin embargo, puede omitir un punto de interrupción, pero puede funcionar si está en un bucle).
Si está haciendo un ciclo y espera desencadenar de nuevo el enunciado del debugger
, puede escribir throw 1
lugar.
throw 1;
Luego, cuando presionas ctrl-R, se golpeará el siguiente tiro, y la página se actualizará.
(probado con Chrome v38, alrededor de abril de 2017)
Si tiene un bucle rogue, pause el código en el depurador de Google Chrome (el pequeño botón " ||
" en la pestaña Fuentes).
Regrese a Chrome en sí, abra "Administrador de tareas" (Shift + ESC), seleccione su pestaña, haga clic en el botón "Terminar proceso".
Obtendrá el mensaje Aww Snap y luego podrá recargar (F5).
Como otros han notado, volver a cargar la página en el momento de pausar es lo mismo que reiniciar el bucle rogue y puede causar bloqueos desagradables si el depurador también se bloquea (en algunos casos conduce a reiniciar Chrome o incluso la PC). El depurador necesita un botón "Parar". Nb: La respuesta aceptada está desactualizada porque algunos aspectos de ella ahora son aparentemente erróneos. Si me votas, por favor explica :) .
Una forma de hacerlo es detener el script, ver qué código sigue donde estás detenido actualmente, por ejemplo:
var something = somethingElse.blah;
En la consola, haz lo siguiente:
delete somethingElse;
Luego ejecute el script: causará un error fatal cuando intente acceder a somethingElse
, y el script morirá. Voila, has terminado el guión.
EDITAR: Originalmente, eliminé una variable. Eso no es lo suficientemente bueno. Debe eliminar una función o un objeto cuyo JavaScript intenta acceder a una propiedad.