Ferramenta de desenvolvimento do Chrome: arquivo do javascript

Eu adicionei um ponto de interrupção no meu arquivo javascript (jaydata.js) e estava pressionando “Passar para a próxima chamada de function.” Quando chegou a uma linha que era:

}, 

outro arquivo intitulado “[VM] (8312)” apareceu. Eu continuei clicando em “Passar para a próxima chamada de function” e agora minha canvas é:

insira a descrição da imagem aqui

Quais são esses scripts estranhos e misteriosos intitulados “[VM] (XXXX) e de onde eles vêm?

[VM] (scriptId) não tem significado especial. É um nome fictício para nos ajudar a distinguir códigos que não estão diretamente ligados a um nome de arquivo, como código criado usando eval e amigos.

No passado, todos esses scripts eram apenas rotulados (program) .

Se 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.

atualizar 2015-06-25

[VM] (scriptId) foi renomeado para VMscriptId há algum tempo , e aqui está o link direto para o resultado da pesquisa caso o valor seja alterado novamente.

Ao usar o eval, o javascript é lançado nas VMs do depurador do Chrome. Para visualizar o js criado com o eval nas origens do depurador do Chrome, defina esse atributo no final (graças ao Splaktar) do js:

 //@ sourceURL=dynamicScript.js 

É possível depurar o JavaScript de carregamento dynamic por algum depurador como o WebKit, o FireBug ou o IE8 Developer Tool?

Sempre que você carregar conteúdo HTML por meio do AJAX e esse conteúdo contiver tags , o script será avaliado usando eval () e reconhecido pela visualização Sources do Chrome como um novo arquivo que começa com 'VM'. Você sempre pode ir para a guia Rede, localizar a solicitação AJAX e visualizar a resposta HTML em sua totalidade, incluindo seu script.

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.

Quando você está depurando uma fonte de janela secundária (iframe) que é subsequentemente descarregada, seu arquivo de origem também obterá o prefixo da VM e o plano de fundo amarelo.

Eu tive o mesmo problema. A questão é que o código do meu aplicativo foi considerado blackboxes por acidente. Quando tentei entrar no código, continuei abrindo essas guias da VMXXXX .

Depois de remover a configuração de checkbox preta do arquivo js do meu aplicativo, consegui passar pelo meu código.

Eu tive o mesmo problema quando eu estava depurando meu aplicativo angular. Ver muitos scripts de VM que não puderam ser em checkbox preta estava demorando muito para depurar. Eu prefiro escolher o mozilla / IE explorer para depurar.

Se você quiser depurar arquivos JS injetados programaticamente no chrome, poderá usar o debugger; declaração, isso é mais rápido do que encontrar onde seu script é e também mais rápido do que gerar um arquivo com o sourceurl .

Ele funciona como um ponto de interrupção e, automaticamente, identifica seu código na guia de origem do Chrome, onde quer que você use o debugger; declaração.

Depurador;

Observe que a origem do script é um arquivo VMXXX.