Cómo terminar la ejecución del script cuando la depuración en Google Chrome?

Cuando paso a través de código JavaScript en Google Chrome depurador, ¿cómo puedo terminar la ejecución del script si no desea continuar? La única manera que he encontrado es cerrar la ventana del navegador.

Pulsando el botón «Recargar esta página» se ejecuta el resto del código, e incluso envía formularios como si al presionar F8 «Continuar».

ACTUALIZACIÓN:

Cuando al presionar la tecla F5 (Actualizar), mientras que el guión está en pausa:

  • Google Chrome (v22) se ejecuta la secuencia de comandos. Si el script envía la solicitud HTTP, HTTP de la respuesta para que la solicitud de muestra. El original de la página no se actualiza.
  • IE 9 sólo se bloquea. Sin embargo es decir, tiene una opción de «Detener Depuración» que, cuando se pulsa (siempre que no presione F5 anterior), continúa a ejecutar la secuencia de comandos fuera del depurador.
  • Firebug se comporta de forma idéntica a la de Chrome.

De cierre y, a continuación, vuelva a abrir la ventana del navegador no es siempre la más fácil siguiente manera
porque va a matar a la sesión del navegador del estado y que pueden ser importantes. Todos los puntos de interrupción se pierden también.

ACTUALIZACIÓN (enero de 2014):

De actualización, mientras que la depuración:

  • Chrome v31: permite la ejecución de los scripts y se detiene en más puntos de interrupción (pero no envía peticiones ajax), entonces se actualiza.
  • Es decir, 11: actualizar no hace nada, pero puede pulsar F5 para continuar.
  • Firefox v26: permite la ejecución de los scripts pero no se detiene en más puntos de interrupción, envía peticiones ajax, luego actualiza.

Tipo de progreso!

Vaya a la página de la misma, mientras que la depuración:

  • Chrome v31: igual que en la Actualización.
  • Es decir, 11: secuencias de comandos están terminados, nueva sesión del navegador se inicia (mismo como cerrar y abrir de nuevo).
  • Firefox v26: no pasa nada.

También juacala sugirió una solución efectiva. Por ejemplo, si usted está usando jQuery, la ejecución de eliminar $ de consola se va a detener la ejecución, una vez que cualquier método jQuery es encontrado. Yo lo he probado en todos los navegadores anteriores y puede confirmar que se está trabajando.

ACTUALIZACIÓN (Mar 2015):

Finalmente, después de más de 2 años y casi 10K de puntos de vista, el derecho de respuesta fue dada por Alexander K. Google Chrome tiene su propio Administrador de Tareas que puede matar a una ficha de proceso sin el cierre de la propia ficha, manteniendo todos los puntos de interrupción y otras cosas intactas.

Yo incluso fue tan lejos como BrowserStack.com para la prueba en Chrome v22 y encontró que esto era trabajar de esta manera, incluso en aquella época.

Juacala la solución todavía es útil cuando la depuración en IE o Firefox.

ACTUALIZACIÓN (Enero de 2019):

Chrome Dev Tools en último añadido una manera adecuada para detener la ejecución del script que es agradable (aunque un poco escondido). Se refieren a James Gentes de la respuesta para más detalles.

  • tipo de debugger; en el dev herramientas de consola y de inmediato va a poner las cosas en su depurador y detener la secuencia de comandos.
  • James Gentes de la respuesta parece ser la mejor solución en 2019
  • Por qué está todo el mundo hablando de detener el script? Esto es acerca de la terminación/romper todo «siguiente/sceduled» código de venir.
InformationsquelleAutor srgstm | 2012-10-30

12 Kommentare

  1. 177

    En Chrome, existe el «Administrador de Tareas», accesible a través de Cambio+ESC o a través de

    Menú → Herramientas → Administrador De Tareas

    Usted puede seleccionar su página de tareas y finalizar con la tecla «Terminar Proceso» botón.

    • chrome 48 esto sólo va a CERRAR el Dev de la herramienta, y no terminar, la reapertura de él, usted puede ver el programa en ejecución (tried setInterval())
    • Yo no veo el «Administrador de Tareas» en la sección «Más Herramientas» y shift+esc no hace nada… (Chrome 50, OSX) Mayús+ESC funciona en Chrome/Windows, aunque…
    • Wow—he deseado esto durante tanto tiempo, y ha estado allí por años! Esta es la más útil de StackOverflow respuesta que yo he visto todo el año!
    • esto no parece funcionar correctamente cuando el proceso es una sesión de depuración remota
    • Gracias hombre, me has salvado la pila 😉
    • Tenga en cuenta que utilizar el Administrador de Tareas para finalizar el proceso de hacer el DOM y secuencias de comandos disponibles para la página (mata a toda la página). Si desea que la página siguen siendo prestados y secuencias de comandos para permanecer disponible, usted tiene que parar la secuencia de comandos mediante un error (ver mi respuesta). Una lo suficientemente inteligente como error de mantener la página completamente funcional; se acaba de dejar todo lo malo bucle usted sucede estar en.
    • Gracias sir tipo
    • Le encantó. es muy útil para mí ya.
    • Si usted cancela una extensión de Chrome (todos ellos se muestran en el Administrador de Tareas), se obtendrá un globo diciendo que la extensión se ha estrellado. Deberá hacer clic en el mensaje para volver a cargar la extensión para que pueda continuar con la depuración de la misma.
    • En Macintosh (Chrome v. 63) esta opción se muestra en el menú «Ventana», en el tercer grupo. No hay ningún atajo de teclado evidente.
    • Esto matará a la ficha
    • James Gentes respuesta a partir de 2018 es la solución más simple ahora.
    • esto cerrará el dev tools para mí y sigue la secuencia de comandos.

  2. 37

    Una manera que usted puede hacer es pausar el script, mira lo que el código de la siguiente manera donde se encuentra actualmente detenido, por ejemplo:

    var something = somethingElse.blah;

    En la consola, haga lo siguiente:

    delete somethingElse;

    A continuación, reproducir la secuencia de comandos: se provocará un grave error cuando se intenta acceder a somethingElse, y el script se va a morir. Voilá, ya he terminado la secuencia de comandos.

    EDICIÓN: Originalmente, he eliminado una variable. Que no es lo suficientemente bueno. Usted tiene que eliminar una función o un objeto de JavaScript que intenta acceder a una propiedad.

    • you have to delete a function or an object un desagradable hack! (en la interfaz de usuario que encajaría muy bien como matar a todos botón)
    • Es bastante desagradable, pero no puedo pensar de otra manera.
    • Años más tarde vuelvo a la misma pregunta… Y no puedo entenderlo! Hay una manera de hacerlo más genérico?
    • Usted no puede averiguar cómo terminar la ejecución del script? Siempre he sido capaz de hacer esto. ¿Tiene usted un ejemplo que no deja de matar a la secuencia de comandos de esta manera?
    • Yo, @juacala, si usted no importaría ayudarme con esto. Estoy ejecutando un simple script que automáticamente hace clic en el Ver los Mensajes más Antiguos de enlace en Facebook hilo de mensajes. Este es todo el código: setInterval(function () { document.getElementById('see_older') .getElementsByClassName('content')[0].click(); }, 250); Cómo iba yo a matar a ese script utilizando el método? Yo no soy novato en JavaScript, pero completamente nuevo a las consolas, y realmente apreciaría cualquier ayuda.
    • usted necesita ser capaz de poner un punto de interrupción dentro de la función. Así que asegúrese de que el interior de la función está en una línea separada de la definición de función. En su caso, usted necesitará en la consola, una vez que se hizo una pausa, «tipo de documento.getElementById(‘see_older’).parentNode.removeChild(documento.getElementById(‘see_older’));». Esto es porque usted no tiene nada en javascript para romper en. Por desgracia, esto cambia el HTML también. Si usted puede cambiar el código a «var el = document.getElementById(‘see_older’);\n el.getEl…», entonces usted puede simplemente hacer «eliminar el;» y que va a parar.
    • Genial, gracias por eso.
    • He llegado hasta aquí buscando una manera de hacer esto en Firefox – esta respuesta hizo el truco.
    • no trabajó, como se va a excepción de controlador…

  3. 4

    Buena pregunta aquí. Creo que no se puede terminar la ejecución del script. Aunque nunca lo he buscado, he estado usando el chrome depurador para un tiempo bastante largo en el trabajo. Por lo general establecer puntos de interrupción en mi código javascript y luego me depurar la porción de código que estoy interesado. Cuando termino la depuración de código que, por lo general basta con ejecutar el resto del programa o actualizar el navegador.

    Si quieres evitar que el resto de la secuencia de comandos se ejecute (por ejemplo, debido a las llamadas AJAX que se va a hacer) la única cosa que puedes hacer es quitar ese código en la consola sobre la marcha, evitando así esas llamadas que están siendo ejecutados, entonces usted podría ejecutar el código restante sin problemas.

    Espero que esto ayude!

    P. S: he tratado de encontrar una opción para la terminación de la ejecución, en algunos tutoriales /guías como los siguientes, pero no podía encontrarla. Como he dicho antes, probablemente no existe esa opción.

    http://www.codeproject.com/Articles/273129/Beginner-Guide-to-Page-and-Script-Debugging-with-C

    http://www.nsbasic.com/app/tutorials/TT10.htm

    • ¿Puedo ayudar? Parece que no hay una cancelar opción, pero con el fin de evitar la ejecución de código siguiente se puede opinar antes o eliminar el código siguiente/llamar «vivir» dentro de la Chrome depurador (esta última opción hará que el botón continuar se comportan como un terminate). Yo sé que no son la solución ideal, pero creo que son los más aceptable queridos. Cualquier comentario?
    • En muchos casos, el código que debe ser impedido de ejecutar es la pila de llamadas (las funciones que va a obtener el control después de la función actual de los retornos). Seguro, puedo ir y funciones de edición de la pila de llamadas y, a continuación, buscar y editar todas las funciones que se podrían denominar de forma asincrónica. Estoy seguro de que debe ser una cosa trivial para un navegador para actualizar una página con el guión aún en el estado de pausa SI se detuvo en el momento en que la Actualización de la Página se pulsa el botón. Yo también creo que debe ser un comportamiento esperado para cualquier navegador (por desgracia, no).
    • De hecho he encontrado una solución para lograr la terminación de la ejecución del script!: En chrome, puedo abrir el depurador para depurar una de mis aplicaciones y me establezca un punto de interrupción. Ejecutar la página. La ejecución se detiene en el punto de interrupción. Entonces me examinar el problema y darse cuenta de lo que está causando el error. Para terminar la ejecución I haga clic en el botón X que aparece junto a la URL (para detener la carga de la página) y luego, al continuar la secuencia de comandos (F8) se terminará. Más fácil camino para lograrlo, creo. ¿Qué piensa usted acerca de esto?
    • El botón X en Chrome es reemplazado con el botón Refresh después de que una página se ha cargado así que no hay manera de prensa X después (también he probado en IE que tiene X disponible todo el tiempo, pero invariablemente se congela). También he probado tu sugerencia durante la carga de la página y se encontró que el guión no termina después de pulsar X y luego la tecla F8. Es probable que las secuencias de comandos que no han sido todavía cargados en el navegador en el momento en que X se presiona no se cargan después, pero que debería ser evidente.
    • Oh, tienes razón, fue una prueba rápida y no ha sido representante… Entonces parece que no hay solución.
    • F8 significa «reanudar la ejecución». Así que si la secuencia de comandos no se detiene por una excepción, que continuará a partir de la línea actual.

  4. 4

    Refiere a la respuesta dada por @scottndecker a la siguiente pregunta, chrome ofrece ahora un ‘deshabilitar JavaScript’ opción en Herramientas de desarrollo:

    • Vertical ... en la parte superior derecha
    • Configuración
    • Y en ‘Preferencias’ ir al Depurador » sección en la parte inferior y seleccione «Desactivar JavaScript’

    Bueno la cosa es que usted puede parar y volver a ejecutar de nuevo simplemente marcando o desmarcando la misma.

    • Si usted downvote porque usted está confundido entre el Desarrollador de Herramientas del menú y el menú de Chrome es muy triste 🙁
    • Gracias @theFreedomBanana este gran trabajo.
    • No funciona para mí. He comprobado el Deshabilitar JavaScript cuadro, pero la secuencia de comandos sólo se mantiene en funcionamiento.
  5. 3

    Si usted está encontrando este, mientras que el uso de la debugger declaración,

    debugger;

    … entonces creo que la página seguirá funcionando para siempre hasta que el js de tiempo de ejecución de los rendimientos, o la siguiente pausa. Asumiendo que estás en la zona de descanso-en-el modo de error (la pausa-icono alternar), puede garantizar un descanso que pasa por el lugar haciendo algo como:

    debugger;throw 1;

    o tal vez llamar a un inexistente función:

    debugger;z();

    (Por supuesto, esto no ayuda si usted está tratando de paso a través de las funciones, aunque tal vez se podría agregar dinámicamente en un throw 1 o z() o somesuch en las Fuentes del panel, ctrl-S para guardar y, a continuación, ctrl-R para actualizar… sin embargo, esto puede saltar un punto, pero puede funcionar si usted está en un bucle.)

    Si usted está haciendo un bucle y se espera para activar la debugger declaración de nuevo, sólo podía tipo throw 1 lugar.

    throw 1;

    A continuación, cuando usted presione ctrl-R, el próximo lanzamiento será de golpe, y la página se actualizará.

    (probado con Chrome v38, circa Abr 2017)

  6. 2

    Usted puede hacerlo, pero debe preparar el primer código.

    Instrucciones para detener la ejecución del script en Google Chrome Dev Tools:

    (1) Prepare el código en primer lugar, mediante la creación de un global variable:

    var devquit=0;
    $(document).ready({
        //the rest of your code

    (2) Cualquier lugar donde usted puede querer dejar de fumar, prueba el valor de esta variable:

    //Lotsa code
    if (devquit > 0) return false;

    (3) detener la ejecución del script en o antes de la línea de prueba(s)

    (4) Interruptor de la consola de

    (5) Tipo:

    > devquit
    0
    > devquit=1   <=== only this line is necessary
    > devquit
    1

    (6) Continuar la ejecución del script. Secuencia de comandos de return false cuando se ejecuta la prueba del paso (2) por encima de


    Notas:

    (A) Este truco funciona con variables globales y los objetos, pero no va a funcionar con las variables locales. Tenga en cuenta que este:

    newVar = 'never used before';

    crea una nueva propiedad del objeto window (funciona con el anterior truco), mientras esto:

    var newVar = 'never used before';

    se crea una variable local (NO funciona con el anterior truco!)

    (B) de Modo que, usted todavía puede utilizar este truco, ya por la ejecución de código si tienes una variable global o de un objeto que se devuelve false si tiene un valor dado.

    (C) En un apuro, puede utilizar juacala del truco y eliminar un elemento del DOM (en la ficha elementos) que causará un error de javascript. Por ejemplo, suponga que tiene código var cartype = $('#cartype').val(); Si se elimina el elemento con ID=cartype antes de que la línea de código, a continuación, el js va a romper en esa línea. Sin embargo, el elemento todavía falta cuando intenta volver a ejecutar el código. El truco descrito anteriormente permite ejecutar y vuelva a ejecutar el código ad infinitum.


    Más notas:

    (a) Insertar punto de interrupción en el código: solo tipo de debugger; en una línea por sí mismo. Si DevTools está abierto, el script va a saltar en el depurador en ese punto. Si DevTools no abierto, de código ignorará declaración.

    (b) Quieren evitar saltar en la biblioteca jQuery cuando la depuración de código? Blackbox es. Ver blackbox instrucciones para Chrome – o – para Firefox


    Gratitud (por favor, visita y upvote):

    Depuración de Javascript línea por línea a través de Google Chrome

    Es posible el cambio de javascript valores de la variable, mientras que la depuración en Google Chrome?

    • Any place where you may wish to quit, test the value of this variable Que horrible! Quiero dejar de fumar dondequiera que me podría pasar a ser de escalonamiento en el momento, no sé de antemano dónde podría ser!
    • Si usted está dispuesto a poner en el trabajo sobre el código de lado, este es el más amigable para el usuario en el cliente tratando de detener la ejecución del script.
  7. 1

    Si usted tiene un pícaro bucle, pausa el código de Google Chrome depurador (el pequeño «|| que» mientras en la ficha Fuentes).

    Volver a Chrome en sí, abre el «Administrador de Tareas» (Shift+ESC), seleccione la ficha, haga clic en el «Fin del Proceso» botón.

    Obtendrá la Aww Complemento mensaje y, a continuación, puede volver a cargar (F5).

    Como otros han señalado, la recarga de la página en el momento de la pausa es el mismo que reiniciar el pícaro bucle y puede provocar desagradables bloqueos si el depurador también, a continuación, bloquea (en algunos casos conduce a reiniciar chrome o incluso el PC). El depurador necesita un botón de «Stop». Nb: La aceptación de respuesta es de la fecha en que algunos aspectos son, ahora, al parecer, mal. Si usted vota conmigo, por favor explique 🙂.

  8. 0

    Abrir la ficha origen en «Herramientas de desarrollo», haga clic en un número de línea en un script que se está ejecutando, esto va a crear un punto de interrupción y el depurador se rompan.

  9. 0

    Puede pausar en cualquier XHR patrón que me parece muy útil durante la depuración de este tipo de escenarios.

    Por ejemplo me han dado a punto de interrupción en un patrón de URL que contiene «/»

    Cómo terminar la ejecución del script cuando la depuración en Google Chrome?

  10. 0

    Hay muchas adecuada solución a este problema como se mencionó anteriormente en este post, pero he encontrado un pequeño hack que puede ser inserrted en la secuencia de comandos o pegadas en los Cromos de la consola (depurador) para lograrlo:

    jQuery(window).keydown(function(e) { if (e.keyCode == 123) debugger; });

    Esto provocará que la ejecución se detiene cuando usted golpea F12.

  11. -4

    La mayoría del tiempo estoy buscando para evitar un bucle o un temporizador que está cambiando los elementos en la página y me impide la inspección de ellos…

    La mayoría de las veces es el uso de jQuery, así que sólo uso:

    eliminar jQuery

    • Umm no JQuery obligado a $?
    • Has probado mi respuesta?
    • VM2371:1 Uncaught ReferenceError: JQuery is not defined(…)
    • Para uno, que es un capital de J… Para dos, mi respuesta debería ser realmente un comentario y, obviamente, sólo se aplica a las páginas con jQuery.
    • Yo no sé si voy a upvote o la bandera de tu comentario.
    • Mismo, podría quitar toda la «respuesta», ya que es simplemente un comentario de todos modos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea