Estoy buscando un equivalente en Chrome a la "romper en todos los errores" funcionalidad de Firebug. En la pestaña Scripts, Chrome tiene una "pausa en todas las excepciones", pero esto no es exactamente lo mismo que romper en todos los errores.
Por ejemplo, al cargar una página con el siguiente código, me gustaría que Chrome rompiera en la línea foo.bar = 42
. En su lugar, incluso cuando se activa la "Pausa en todas las excepciones", no obtengo el resultado esperado.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript">
function doError() {
foo.bar = 42;
}
window.onload = function() {
try {
doError();
} catch (e) {
console.log("Error", e);
}
}
</script>
</head>
<body>
</body>
</html>
Puedes probar el código pegado arriba en esta página o usando este [jsFiddle][2].
Edición: El enlace original con el que respondí ya no es válido.La URL más nueva sería https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions a partir del 2016-11-11.
Me doy cuenta de que esta pregunta tiene una respuesta, pero ya no es exacta. Usa el enlace de arriba ^
(enlace reemplazado por el editado arriba) - ahora puedes configurarlo para que se rompa en todas las excepciones o sólo en las no manejadas. (Tenga en cuenta que necesita estar en la pestaña Fuentes para ver el botón).
Chrome's también ha añadido algunas otras capacidades de puntos de ruptura realmente útiles ahora, como la ruptura en los cambios del DOM o los eventos de red.
Normalmente no volvería a responder a una pregunta, pero yo mismo tenía la misma pregunta, y encontré esta respuesta que ahora es errónea, así que pensé en poner esta información aquí para la gente que llegue más tarde en la búsqueda. :)
Casi cualquier error lanzará una excepción. Los únicos errores que se me ocurren que no funcionarían con la opción "pausa en excepciones" son los errores de sintaxis, que ocurren antes de que se ejecute el código, por lo que no hay lugar para la pausa de todos modos y no se ejecutará nada del código.
Aparentemente, Chrome no pausará la excepción si está dentro de un bloque try-catch. Sólo se detiene en las excepciones no capturadas. No conozco ninguna forma de cambiarlo.
Si sólo necesitas saber en qué línea se produjo la excepción (entonces podrías establecer un punto de interrupción si la excepción es reproducible), el objeto Error
que se da al bloque catch tiene una propiedad stack
que muestra dónde se produjo la excepción.