javascript - que - ¿Cómo forzar las herramientas de depuración de Chrome para depurar en código bonito?
javascript console chrome (4)
Aunque utilicé código bonito y configuré los puntos de interrupción en la pestaña "Código bonito", el depurador sigue trabajando en el código minificado. (No puedo ver exactamente dónde estoy y necesito cambiar continuamente entre la fuente y el "código bonito"). En las mismas páginas con el mismo script a veces funciona y otras no. No puedo encontrar la causa o cualquier diferencia en la forma en que lo activo.
¿Hay alguna forma de obligar al depurador a usar "código bonito"? ¿Ideas o preguntas adicionales? ¿Debe esto ser reportado como un error?
EDIT: Todavía no entiendo lo que está pasando pero hay una solución para ello. Entonces, cuando ocurra esta situación, simplemente edite el script y agregue "depurador"; palabra clave después del cursor. Hará un punto de quiebre. Luego, si usa "código bonito", el depurador permanecerá dentro del código prettified. Como dije, no entiendo por qué está sucediendo esto, así que todavía estoy esperando respuestas.
EDITAR: la versión actual del navegador es 42.0.2311.135 (64 bits).
EDIT: Dave señaló que hay un error reportado en algo muy similar. https://code.google.com/p/chromium/issues/detail?id=415406 Dice que está relacionado con el tamaño del archivo, pero no puedo confirmarlo. Cambié el título para reflejar estos hallazgos.
Usted puede llamar a esto un error. Puedes llamarlo un dillema.
Boleto abierto desde el 9 de agosto de 2013 (Chrome v. 28)
Observaciones de Bug Reporter
He pasado algún tiempo depurando esto y familiarizándome con cómo desarrollar devtools localmente; No estoy seguro de si todo esto es útil, pero aquí hay una gran noticia de lo que he visto hasta ahora y algunos presentimientos:
Al adjuntar un punto de interrupción en el archivo .js original, la interfaz de usuario parece confundirse y asigna el punto de interrupción al archivo .coffee o .ts asociado según la asociación sourceMap [ver imagen-1, adjunta]
Sin embargo, al desmarcar el punto de interrupción para deshabilitar, la interfaz de usuario se actualiza correctamente para mostrar el punto de interrupción en el lugar correcto en el archivo .js. [ver imagen-2, adjunta]
Me parece que está ocurriendo una búsqueda incorrecta en WebInspector.CompilerScriptMapping.rawLocationToUILocation o WebInspector.CompilerScriptMapping.uiLocationToRawLocation
Boleto abierto desde el 21 de septiembre de 2014 (Chrome v. 37)
Observación del desarrollador de cromo
Esto no es algo que pueda resolverse fácilmente. El administrador de puntos de interrupción se basa en la idea de que el punto de interrupción siempre se muestra en la "mejor ubicación posible de la interfaz de usuario", que es una fuente no compilada en el caso de los mapas de origen. Arreglar esto requeriría que usáramos la ubicación principal de la interfaz de usuario del punto de interrupción como una indicación de dónde se debería mostrar. Además, como la línea de ejecución se mostrará en las fuentes no compiladas de forma predeterminada, es esencial que sigamos mostrando nuestros puntos de interrupción también. Entonces, todo esto termina en la necesidad de mostrar puntos de interrupción (y línea de ejecución) en varias ubicaciones de la interfaz de usuario al mismo tiempo. Todas las acciones con estas ubicaciones deberían funcionar sin problemas, etc.
Este es un esfuerzo significativo y no me suena como un "GoodFirstBug".
Conclusión:
Prettify no parece crear una nueva versión no minificada. Más bien se representa. Esto tiene sentido. Con todos los marcos y sabores diferentes (por ejemplo, café), si el depurador creó un nuevo archivo, existe un alto potencial de error.
El administrador de puntos de interrupción se basa en la idea de que el punto de interrupción siempre se muestra en la "mejor ubicación posible de la interfaz de usuario", que es una fuente no compilada en el caso de los mapas de origen.
Interpreto que esto significa que el navegador Chrome y el depurador continuarán ejecutándose desde la versión minificada. Cuando establece un punto de ruptura en un archivo "bonito", el depurador lo establece en el archivo minimizado y le da al desarrollador una representación "bonita" de la depuración del depurador a través del archivo minimizado.
Esto es mucho para que el depurador lo administre, y puede ser bastante frágil. Podemos llamar a esto un error o una característica muy ambiciosa por la cual muchas cosas pueden salir mal.
**
He añadido este hilo a ambos errores y he enviado un correo electrónico a los dos desarrolladores asignados.
**
¿Qué tal esto ?: Genere la versión de impresión bonita de su versión "min" y guárdela usando su nombre de versión "min": sustituya la "min" por una bonita "one"
Parece que está haciendo clic en el icono "{}" (impresión bonita) ubicado en el panel inferior y está estableciendo un punto de interrupción allí sin adjuntar un mapa de origen del archivo original.
Cuando se le asigna un archivo .map, las herramientas de desarrollo de Chrome y asignan cada línea de código minificado ejecutado al archivo fuente original utilizando los datos del archivo .map. De lo contrario, solo hará lo posible para sangrar / formatear el archivo minificado.
Le sugiero que use uglify grunt o similar para minimizar su js, que generará automáticamente un archivo de mapa para la depuración. Vea los siguientes enlaces para obtener más información sobre cómo hacer esto.
En Chrome y Safari, simplemente seleccione la pestaña ''Scripts'', busque el archivo relevante y luego presione el icono "{}" (impresión bonita) ubicado en el panel inferior.