Agregué un punto de interrupción en mi archivo javascript (jaydata.js) y estaba presionando "Pasar a la siguiente llamada de función". Cuando llegó a una línea que era:
},
apareció otro archivo titulado "[VM] (8312)". Seguí haciendo clic en "Pasar a la siguiente llamada de función" y ahora mi pantalla es:
¿Cuáles son estos guiones extraños y misteriosos titulados "[VM] (XXXX" y de dónde provienen?
debugging
google-chrome-devtools
AllieCat
fuente
fuente
Respuestas:
[VM] (scriptId)
No tiene un significado especial. Es un nombre ficticio que nos ayuda a distinguir el código que no está directamente relacionado con un nombre de archivo, como el código creado coneval
y amigos.En el pasado, todas estas secuencias de comandos solo estaban etiquetadas
(program)
.Si está interesado, solo busque
"[VM]"
el código fuente de Chromium , descubrirá que estos números no tienen un significado significativo fuera de las herramientas del desarrollador.actualizar 2015-06-25
[VM] (scriptId)
fue renombradoVMscriptId
hace un tiempo , y aquí está el enlace directo al resultado de la búsqueda en caso de que el valor cambie nuevamente.fuente
[VM] (scriptId)
fue renombradoVMscriptId
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ódigo es: cs.chromium.org/%22VM%5C%22%20+%22 (enlace directo al resultado de la búsqueda en caso de que el valor cambie nuevamente: chromium.googlesource.com/chromium/blink/+/… )Siempre que cargue contenido HTML a través de AJAX, y ese contenido contenga
<script>
etiquetas, la secuencia de comandos se evaluará utilizando eval () y la vista de Fuentes de Chrome la reconocerá como un nuevo archivo que comienza con 'VM'. Siempre puede ir a la pestaña Red, encontrar la solicitud AJAX y ver la respuesta HTML en su totalidad, incluido su script.fuente
src=/test.js
un error que se remonta a test.js, el rastreo contiene el nombre de archivo correcto, pero a continuación, stacktraces contiene la magia VM. Esto hace que sea imposible obtener el código fuente [del mismo origen] para los archivos en el stacktrace más de una vez, y no puede almacenarlos en caché, ya que no sabe qué archivo es cuál en los stacktraces futuros. Esto se soluciona en Dev Tools, pero no en webapps.Cuando se usa eval, el javascript se arroja a las máquinas virtuales de Chrome Debugger. Para ver js creados con eval en Chrome Debugger Sources, establezca este atributo al final (gracias Splaktar) de js:
¿Es posible depurar JavaScript de carga dinámica por algún depurador como WebKit, FireBug o IE8 Developer Tool?
fuente
Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
Si desea depurar archivos JS inyectados mediante programación en Chrome, puede usar la
debugger;
instrucción, esto es más rápido que encontrar dónde está su script y también más rápido que generar un archivo con sourceurl .Funciona como un punto de interrupción y señala automáticamente su código en la pestaña de fuente de Chrome donde usa la
debugger;
instrucción.Tenga en cuenta que la fuente del script es un archivo VMXXX.
fuente
debugger;
declaración, puede desmitificar de dónde provienen los misteriosos 'misteriosos y misteriosos guiones titulados "[VM] (XXXX"' si así lo desea.Encontré que VM se genera a partir de algunas extensiones de Chrome: insertan CSS / JS en la página y Chrome usa los archivos de VM para ejecutarlo.
fuente
Cuando está depurando una fuente de ventana secundaria (iframe) que posteriormente se descarga, su archivo fuente también obtendrá el prefijo VM y el fondo amarillo.
fuente
Tuve el mismo problema. El problema es que el código de mi aplicación se consideró blackboxes por accidente. Cuando intenté ingresar al código, seguía abriendo estas
VMXXXX
pestañas.Después de eliminar la configuración de blackbox para el archivo js de mi aplicación, pude pasar con éxito mi código.
fuente
para evitar esto
Y luego blackbox
^.*blackbox-this.js$
Lo mismo para setInterval / setTimeout cuando obtiene una cadena (pero eso es una mala práctica de todos modos, ¿verdad?;))
Eso funciona para ti?
fuente
Tuve el mismo problema cuando estaba depurando mi aplicación angular. Ver demasiados scripts de VM que no podían ser ennegrecidos realmente tardaba mucho en depurar. Prefiero elegir mozilla / IE explorer para depurar.
fuente