Mendiagnosis Error Runtime VM
Ikuti langkah-langkah ini secara berurutan. Setiap langkah menyingkirkan satu penyebab umum sebelum Anda menghabiskan waktu untuk mempersempit kode yang gagal.
1. Pengujian dan CI
Pertama, singkirkan kemungkinan pertahanan runtime (VM Self Defending, VM Debug Protection, VM Domain Lock): reproduksi kegagalan dengan build pengujian yang memakai override dari Pengujian dan CI. Jika build pengujian berfungsi, berarti pertahanan tersebut bereaksi terhadap alat atau lingkungan Anda, bukan merusak kode Anda.
2. Kompatibilitas runtime
Periksa bahwa target, pipeline build, dan deklarasi lingkungan apa pun sesuai dengan tempat kode benar-benar berjalan.
Proteksi VM berlaku untuk fungsi yang memenuhi syarat. Pada mode root, vmWrapTopLevelInitializers juga dapat membungkus initializer yang memenuhi syarat untuk virtualisasi; preset VM saat ini mengaktifkannya. Tinjau peringatan cakupan seperti VMNoFunctionsToVirtualize, dan gunakan mode komentar untuk memilih fungsi sensitif secara eksplisit.
Perkecil kasus yang gagal hingga fungsi dan titik pemanggilan terkecil yang masih mereproduksinya. Gunakan mode komentar untuk mempersempit fungsi mana yang divirtualisasi.
Jika Anda menggunakan vmBytecodeArrayEncoding dengan vmBytecodeArrayEncodingKeyGetter, getter harus mengembalikan kunci yang persis sama dengan yang digunakan saat build, dan kunci tersebut harus sudah disetel ketika kode hasil obfuskasi dijalankan; jika tidak, bytecode tidak dapat didekode.
Kompatibilitas Runtime · Kunci Bytecode Array Encoding
3. Kirim laporan bug
Kirim email ke support@obfuscator.io. Semakin banyak hal berikut yang Anda sertakan, semakin cepat kami dapat memperbaikinya:
- Stack trace error lengkap, persis seperti yang muncul di konsol, bukan parafrase.
- Opsi obfuscator dalam format JSON. Salin seluruh objek opsi yang Anda gunakan (atau nama preset beserta override-nya). Interaksi halus antaropsi sering terjadi, jadi kami membutuhkan set yang persis.
- Peringatan build, jika ada:
type,message, danfunctionNamedari masing-masing peringatan. - Versi obfuscator - ditampilkan di pemilih versi dasbor di bawah editor. Untuk build API dan paket npm, versi ini adalah field
versiondari pesanresultatauchunk_endmilik API. - Lingkungan - peramban beserta versinya, versi Node.js, OS, dan apa pun yang tidak biasa pada runtime (ekstensi, polyfill, builtin kustom).
- Reproduksi minimal - idealnya satu fungsi dari bagian 2, ditambah titik pemanggilan yang diperlukan untuk memicu error.
- Source asli (sebelum obfuskasi), jika memungkinkan. Keluaran hasil obfuskasi juga buram bagi kami; tanpa input, kami harus merekayasa balik bytecode kami sendiri.
Jika source tersebut bersifat proprietary, sebutkan di email; kami dapat menandatangani NDA sebelum Anda membagikannya. Kami tidak dapat mendiagnosis bug VM secara andal tanpa melihat pola input yang menghasilkan bytecode yang rusak, jadi upaya bolak-balik itu sepadan.
