Herramienta de desarrollo de Chrome: archivo [VM] de javascript

Agregué un punto de interrupción en mi archivo javascript (jaydata.js) y presioné "Pasar a la siguiente llamada de función". Cuando llegó a una línea que era:

},

otro archivo titulado "[VM] (8312)" apareció. Seguí haciendo clic en "Pasar a la siguiente función de llamada" y ahora mi pantalla es:

¿Cuáles son estos scripts extraños y misteriosos titulados "[VM] (XXXX" y de dónde vienen?

 QuentinUK16 dic. 2016 13:46
Estos archivos de VM también aparecen cuando está editando archivos que se están depurando al mismo tiempo. Chrome pierde la sincronización y cuando se coloca un punto de interrupción en el archivo, detendrá el código en alguna otra posición del archivo en la memoria en algún lugar. p.ej. test.html permitirá un punto de interrupción, pero cuando Chrome se detiene, lo hace en VM99: test.html en alguna otra posición. La solución es cerrar Chrome para cambiar el nombre de los archivos, por ejemplo. test2.html, y empezar de nuevo. (El historial de borrado, el caché, etc. no funciona y Chrome seguirá cargando el VM99: test.html si lo intentas.

Respuestas a la pregunta(3)

el javascript se lanza a las máquinas virtuales del depurador de Chrome. Para ver los js creados con eval en Chrome Debugger Sources, establezca este atributo al final (gracias Splaktar) de los js:

//@ sourceURL=dynamicScript.js

¿Es posible depurar el JavaScript de carga dinámica por algún depurador como WebKit, FireBug o IE8 Developer Tool?

 Carl Smith19 jun. 2014 15:41
@ todavía funciona para mí.
 Splaktar19 ago. 2014 22:55
También debería estar al final del JavaScript, no al comienzo.
 Nighto17 mar. 2016 19:00
En las herramientas de depuración de Firefox, diceUsing //@ to indicate sourceURL pragmas is deprecated. Use //# instead
 ThiagoPonte03 jun. 2014 16:34
La sintaxis ha cambiado, ahora es: // # sourceURL = dynamicScript.js
 Eve juan09 abr. 2015 12:18
¡Gracias! ¡Es tan útil!
 manuell09 feb. 2016 16:15
Ese truco también funciona bien para el script inyectado víadocument.createElement('script');
 Worthy703 ago. 2016 03:24
lol JS nunca deja de sorprenderme
 David Kierans02 oct. 2014 09:47
He estado buscando algo como esto. Gracias

y ese contenido contiene<script> En las etiquetas, el script se evaluará utilizando eval () y la vista de fuentes de Chrome lo reconocerá como un nuevo archivo que comienza con 'VM'. Siempre puede ir a la pestaña Red, buscar la solicitud AJAX y ver la respuesta HTML en su totalidad, incluido su script.

 Faly23 jun. 2018 06:13
Gracias @Sam Kauffman, me salvaste el día.
 Carl Smith19 jun. 2014 15:45
Esto apesta para la depuración sin embargo. Si utilizo una etiqueta de script consrc=/test.js luego causa un error que remonta a test.js, el rastreo contiene el nombre de archivo correcto, pero a partir de entonces, los stacktraces contienen la magia VM. Esto hace que sea imposible obtener el código fuente [del mismo origen] para los archivos en el seguimiento de pila más de una vez, y no puede almacenarlos en caché, ya que no sabe qué archivo es cuál en el futuro. Esto se corrige en Dev Tools, pero no en webapps.
Solución de preguntas

[VM] (scriptId) no tiene un significado especial Es un nombre ficticio que nos ayuda a distinguir el código que no está directamente vinculado a un nombre de archivo, como el código creado usandoeval y amigos.

En el pasado, todos estos scripts fueron etiquetados(program).

Si te interesa, solobuscar"[VM]"en el código fuente de cromo, descubrirá que estos números no tienen un significado significativo fuera de las herramientas del desarrollador.

actualización 2015-06-25

[VM] (scriptId) fue renombrado aVMscriptId Hace un tiempo, y aquí está elenlace directo al resultado de búsqueda En caso de que el valor cambie nuevamente.

 AllieCat29 jun. 2013 04:31
Guay. Y gracias por el enlace, ¡no tenía idea de dónde buscar!
 Rob W02 oct. 2013 22:42
@Matt ¿Qué quiere decir con "golpear el archivo [VM] en lugar del archivo live js"?
 Matt04 oct. 2013 15:48
@RobW ignorar; mi navegador estaba guardando en caché el archivo js (a pesar de haber actualizado mi destructor de caché).
 Matt02 oct. 2013 16:46
¿Chrome golpearía el archivo [VM] en lugar del archivo live js? Si es así, ¿por qué?
 Danger02 jun. 2016 21:44
Recientemente encontré este problema sin ninguna evaluación: parece estar relacionado con el uso de iFrames. Mi evidencia de esto es que cuando establezco un punto de interrupción en el código de un iFrame, me sale el problema [VM], pero cuando abro el iFrame en su propia ventana, me sale bien del punto de interrupción. Solo asegúrese de que esto califique como uno de los "amigos" de eval como se describe en la respuesta.
 Rob W25 jun. 2015 19:25
[VM] (scriptId) fue renombrado aVMscriptId Hace un tiempo, pero he mantenido la respuesta en su estado actual para no invalidar la pregunta. El último enlace de búsqueda de códigos es:cs.chromium.org/%22VM%5C%22%20+%22 (enlace directo al resultado de búsqueda en caso de que el valor cambie nuevamente:chromium.googlesource.com/chromium/blink/+/…)

Su respuesta a la pregunta