Saya menambahkan breakpoint di file javascript saya (jaydata.js) dan menekan "Melangkah ke pemanggilan fungsi berikutnya." Ketika sampai pada baris itu adalah:
},
file lain berjudul "[VM] (8312)" muncul. Saya terus mengklik "Melangkah ke panggilan fungsi berikutnya" dan sekarang layar saya adalah:
Apa skrip aneh dan misterius berjudul "[VM] (XXXX" dan dari mana asalnya?
debugging
google-chrome-devtools
AllieCat
sumber
sumber
Jawaban:
[VM] (scriptId)
tidak memiliki arti khusus. Ini adalah nama tiruan untuk membantu kita membedakan kode yang tidak terkait langsung dengan nama file, seperti kode yang dibuat menggunakaneval
dan teman.Dulu, semua skrip ini hanya diberi label
(program)
.Jika Anda tertarik, cukup cari
"[VM]"
di kode sumber Chromium , Anda akan menemukan bahwa angka-angka ini tidak memiliki arti yang signifikan di luar alat pengembang.perbarui 2015-06-25
[VM] (scriptId)
telah diubah namanya menjadiVMscriptId
beberapa waktu yang lalu , dan ini adalah tautan langsung ke hasil penelusuran jika nilainya berubah lagi.sumber
[VM] (scriptId)
telah diubah namanya menjadiVMscriptId
beberapa waktu yang lalu , tetapi saya telah menyimpan jawaban dalam keadaan saat ini agar pertanyaan tidak batal. Tautan penelusuran kode terbaru adalah: cs.chromium.org/%22VM%5C%22%20+%22 (tautan langsung ke hasil penelusuran jika nilainya berubah lagi: chromium.googlesource.com/chromium/blink/+/… )Setiap kali Anda memuat konten HTML melalui AJAX, dan konten tersebut berisi
<script>
tag, skrip akan dievaluasi menggunakan eval () dan dikenali oleh tampilan Sumber Chrome sebagai file baru yang diawali dengan 'VM'. Anda selalu dapat membuka tab Jaringan, menemukan permintaan AJAX, dan melihat tanggapan HTML secara keseluruhan, termasuk skrip Anda.sumber
src=/test.js
kemudian menyebabkan kesalahan yang menelusuri kembali ke test.js, traceback berisi nama file yang benar, tetapi setelah itu, stacktraces berisi keajaiban VM. Hal ini membuat tidak mungkin untuk mendapatkan kode sumber [dari asal yang sama] untuk file di stacktrace lebih dari satu kali, dan Anda tidak dapat menyimpannya di cache, karena Anda tidak tahu file mana di stacktrace mendatang. Ini diperbaiki di Alat Dev, tetapi tidak di aplikasi web.Saat menggunakan eval, javascript dilemparkan ke VM Debugger Chrome. Untuk melihat js yang dibuat dengan eval di bawah Sumber Debugger Chrome, setel atribut ini di akhir (terima kasih Splaktar) dari js:
Apakah mungkin untuk men-debug JavaScript pemuatan dinamis oleh beberapa debugger seperti WebKit, FireBug atau Alat Pengembang IE8?
sumber
Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
Jika Anda ingin men-debug file JS yang dimasukkan secara terprogram di chrome, Anda dapat menggunakan
debugger;
pernyataan tersebut, ini lebih cepat daripada menemukan di mana skrip Anda berada dan juga lebih cepat daripada membuat file dengan sourceurl .Ini berfungsi seperti breakpoint dan secara otomatis menunjukkan kode Anda di tab sumber chrome di mana pun Anda menggunakan
debugger;
pernyataan tersebut.Perhatikan bahwa sumber skrip adalah file VMXXX.
sumber
debugger;
pernyataan tersebut dia dapat mengungkap dari manaSaya menemukan VM dihasilkan dari beberapa ekstensi Chrome - mereka memasukkan CSS / JS ke dalam halaman dan Chrome menggunakan file VM untuk menjalankannya.
sumber
Saat Anda men-debug sumber jendela anak (iframe) yang kemudian diturunkan, file sumber Anda juga akan mendapatkan awalan VM dan latar belakang kuning.
sumber
Saya mengalami masalah yang sama. Masalahnya adalah kode aplikasi saya dianggap sebagai kotak hitam secara tidak sengaja. Ketika saya mencoba masuk ke kode,
VMXXXX
tab ini terus terbuka .Setelah menghapus pengaturan kotak hitam untuk file js aplikasi saya, saya berhasil melangkah melalui kode saya.
sumber
untuk mencegahnya
Dan kemudian kotak hitam
^.*blackbox-this.js$
Sama untuk setInterval / setTimeout ketika mendapat string (tetapi itu adalah praktik yang buruk, kan?;))
Apakah itu berhasil untuk Anda?
sumber
Saya memiliki masalah yang sama ketika saya men-debug aplikasi sudut saya. Melihat terlalu banyak skrip VM yang tidak dapat dimasukkan ke kotak hitam membutuhkan waktu lama untuk di-debug. Saya lebih memilih mozilla / IE explorer untuk men-debug.
sumber