Adicionei um ponto de interrupção no meu arquivo javascript (jaydata.js) e estava pressionando "Avançar para a próxima chamada de função". Quando chegou a uma linha que era:
},
outro arquivo intitulado "[VM] (8312)" apareceu. Continuei clicando em "Passar para a próxima chamada de função" e agora minha tela é:
Quais são esses scripts estranhos e misteriosos intitulados "[VM] (XXXX" e de onde eles vêm?
debugging
google-chrome-devtools
AllieCat
fonte
fonte
Respostas:
[VM] (scriptId)
não tem significado especial. É um nome falso para nos ajudar a distinguir código que não está diretamente vinculado a um nome de arquivo, como código criado usandoeval
e amigos.No passado, todos esses scripts eram apenas rotulados
(program)
.Se você estiver interessado, basta procurar
"[VM]"
no código-fonte do Chromium e descobrirá que esses números não têm significado significativo fora das ferramentas do desenvolvedor.atualização 2015-06-25
[VM] (scriptId)
foi renomeado paraVMscriptId
um tempo atrás e aqui está o link direto para o resultado da pesquisa , caso o valor mude novamente.fonte
[VM] (scriptId)
foi renomeado paraVMscriptId
um tempo atrás , mas mantive a resposta no estado atual para não invalidar a pergunta. O link mais recente de pesquisa de código é: cs.chromium.org/%22VM%5C%22%20+%22 (link direto para o resultado da pesquisa caso o valor mude novamente: chromium.googlesource.com/chromium/blink/+/… )Sempre que você carrega conteúdo HTML por meio do AJAX, e esse conteúdo contém
<script>
tags, o script será avaliado usando eval () e reconhecido pela visualização Fontes do Chrome como um novo arquivo começando com 'VM'. Você sempre pode ir para a guia Rede, encontrar a solicitação AJAX e visualizar a resposta HTML na íntegra, incluindo seu script.fonte
src=/test.js
e causar um erro que remonta ao test.js, o traceback conterá o nome de arquivo correto, mas, a partir de então, o stacktraces conterá a mágica da VM. Isso torna impossível obter o código-fonte [da mesma origem] para os arquivos no rastreamento de pilha mais de uma vez, e você não pode armazená-los em cache, pois não sabe qual arquivo é o que nos futuros rastreamentos de pilha. Isso foi corrigido no Dev Tools, mas não nos webapps.Ao usar eval, o javascript é lançado nas VMs do Chrome Debugger. Para visualizar os js criados com eval em Fontes do depurador do Chrome, defina este atributo no final (graças ao Splaktar) dos js:
É possível depurar o JavaScript de carregamento dinâmico por algum depurador como WebKit, FireBug ou IE8 Developer Tool?
fonte
Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
Se você deseja depurar injetado programaticamente arquivos JS em cromo você pode usar a
debugger;
declaração, isto é mais rápido do que encontrar onde seu script é e também mais rápido do que gerar um arquivo com sourceUrl .Ele funciona como um ponto de interrupção e identifica automaticamente seu código na guia de origem do chrome, onde quer que você use a
debugger;
instrução.Observe que a fonte do script é um arquivo VMXXX.
fonte
debugger;
afirmação, ele pode desmistificar de onde vêm os misteriosos 'scripts estranhos e misteriosos intitulados "[VM] (XXXX"', se assim o desejar. #Descobri que a VM é gerada a partir de algumas extensões do Chrome - elas inserem CSS / JS na página e o Chrome usa os arquivos da VM para executá-la.
fonte
Quando você está depurando uma fonte de janela filho (iframe) que é descarregada posteriormente, seu arquivo de origem também obtém o prefixo da VM e o fundo amarelo.
fonte
Eu tive o mesmo problema. O problema é que o código do meu aplicativo foi considerado uma caixa preta por acidente. Quando tentei entrar no código, ele continuou abrindo essas
VMXXXX
guias.Depois de remover a configuração de caixa preta para o arquivo js do meu aplicativo, eu poderia percorrer com êxito o meu código.
fonte
para evitar isso
E então blackbox
^.*blackbox-this.js$
O mesmo para setInterval / setTimeout quando obtém uma string (mas isso é uma prática ruim, certo?;))
Isso funciona para você?
fonte
Eu tive o mesmo problema ao depurar meu aplicativo angular. Ver muitos scripts de VM que não podiam ser colocados na caixa preta estava demorando muito para depurar. Eu preferi escolher o mozilla / IE explorer para depurar.
fonte