Инструмент разработки Chrome: [VM] файл из javascript

Я добавил точку останова в свой файл javascript (jaydata.js) и нажимал "перейти к следующему вызову функции." Когда он добрался до строки, которая была:

},

появился еще один файл под названием "[VM] (8312)". Я продолжал нажимать "перейти к следующему вызову функции", и теперь мой экран:

enter image description here

что это за странные и таинственные скрипты под названием "[VM] (XXXX " и откуда они берутся?

8 ответов


[VM] (scriptId) не имеет особого смысла. Это фиктивное имя, чтобы помочь нам отличить код, который непосредственно не привязан к имени файла, например, код, созданный с помощью eval и друзей.

в прошлом, все эти сценарии были просто помечены (program).

Если вам интересно, просто посмотреть "[VM]"в исходном коде Chromium, вы обнаружите, что эти цифры не имеют существенного значения вне инструменты разработчика.

обновление 2015-06-25

[VM] (scriptId) была переименована в VMscriptId некоторое время назад, а вот прямая ссылка на результат поиска в случае, если значение снова меняется.


при использовании eval javascript попадает в отладчик Chrome VMs. Чтобы просмотреть js, созданный с помощью eval в источниках отладчика Chrome, установите этот атрибут в конце (спасибо Splaktar) js:

//@ sourceURL=dynamicScript.js

можно ли отлаживать динамическую загрузку JavaScript с помощью некоторого отладчика, такого как WebKit, FireBug или IE8 Developer Tool?


всякий раз, когда вы загружаете HTML-контент через AJAX, и этот контент содержит <script> теги, скрипт будет оценен с помощью eval () и распознан в представлении источников Chrome как новый файл, начинающийся с "VM". Вы всегда можете перейти на вкладку Сеть, найти запрос AJAX и просмотреть ответ HTML полностью, включая ваш скрипт.


Я обнаружил, что VM генерируется из некоторых расширений Chrome-они вставляют CSS / JS на страницу, и Chrome использует файлы VM для его запуска.


когда вы отлаживаете источник дочернего окна (iframe), который впоследствии выгружается, ваш исходный файл также получит префикс VM и желтый фон.


я столкнулся с такой же проблемой. Проблема в том, что код моего приложения был рассмотрен blackboxes случайно. Когда я попытался войти в код, он продолжал открывать эти VMXXXX вкладки.

после удаления настройки blackbox для JS-файла моего приложения я мог бы успешно выполнить свой код.


Если вы хотите отлаживать программно введенные JS-файлы в chrome, вы можете использовать debugger; заявление, это быстрее, чем найти, где ваш скрипт, а также быстрее, чем создание файла с sourceurl.

он работает как точка останова и автоматически определяет ваш код на вкладке источника chrome, где бы вы ни использовали debugger; заявление.

Debugger;

обратите внимание, что источник сценарий VMXXX файл.


У меня была такая же проблема, когда я отлаживал свое угловое приложение. Видя слишком много сценариев VM, которые не могли быть blackboxed действительно занимает много времени для отладки. Я скорее выбрал mozilla / IE explorer для отладки.