Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Edit dan Lanjutkan untuk proyek C++ menangani sebagian besar jenis perubahan kode. Namun, beberapa perubahan tidak dapat diterapkan selama eksekusi program. Untuk menerapkan perubahan ini, Anda harus menghentikan eksekusi dan membangun versi baru kode.
Lihat Edit dan Lanjutkan (C++) untuk informasi tentang bekerja dengan Edit dan Lanjutkan untuk C++ di Visual Studio.
Persyaratan
Pengaturan build (Properti Proyek > )
C/C++ > Format Informasi Debug Umum>: Database Program untuk Edit dan Lanjutkan (
/ZI)Linker > Aktifkan Penautan Inkremental Umum>: Ya (
/INCREMENTAL)Pengaturan linker yang tidak kompatibel (seperti
/SAFESEH, atau/OPT:...) dapat menyebabkan peringatan LNK4075 selama build. Contoh:LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
Pengaturan debugger (Opsi Debug > )
Buka panel OpsiDebug (atau >) dan perluas bagian Semua Pengaturan>Debugging.NET>/C++ Hot Reload.
Buka dialog OpsiDebug (atau >), dan perluas bagian Debugging.NET>/C++ Hot Reload.
Pilih satu atau semua opsi berikut untuk mengaktifkan fitur:
Aktifkan Hot Reload: Mengaktifkan Hot Reload saat dimulai dengan debugger terpasang (F5).
Aktifkan Hot Reload saat memulai tanpa debugging: Mengaktifkan Hot Reload saat memulai tanpa debugger terhubung (Ctrl + F5).
Aktifkan Hot Reload pada Penyimpanan File: Mengaktifkan Hot Reload saat file disimpan.
Verbositas pengelogan: Atur tingkat pengelogan saat Hot Reload diaktifkan. Pilih dari Minimal (default), Terperinci, atau Diagnostik.
Mengubah pengaturan ini memengaruhi semua proyek yang Anda kerjakan. Anda tidak perlu membangun kembali aplikasi Setelah mengubah pengaturan. Jika Anda membuat aplikasi dari baris perintah atau dari makefile, tetapi Anda men-debug di lingkungan Visual Studio, Anda masih dapat menggunakan Edit dan Lanjutkan jika Anda mengatur /ZI opsi.
Dalam dialog OpsiDebug (atau >) , perluas bagian Umum Penelusuran Kesalahan>, dan pilih kotak centang Aktifkan Edit Asli dan Lanjutkan.
Pengaturan pengkompilasi atau pengtaut yang tidak kompatibel menyebabkan kesalahan selama Edit dan Lanjutkan.
Contoh: Edit and Continue : error : ‘file.cpp’ in ‘MyApp.exe’ was not compiled with Edit and Continue enabled. Ensure that the file is compiled with the Program Database for Edit and Continue (/ZI) option.
Perubahan yang tidak didukung
Perubahan C/C++ berikut tidak dapat diterapkan selama sesi penelusuran kesalahan. Jika Anda membuat salah satu perubahan ini lalu mencoba menerapkan perubahan kode, kesalahan atau pesan peringatan muncul di jendela Output .
Sebagian besar perubahan pada data global atau statis.
Perubahan pada executable yang disalin dari komputer lain dan tidak dibangun secara lokal.
Perubahan pada jenis data yang memengaruhi tata letak objek, seperti anggota data kelas.
Menambahkan lebih dari 64k byte kode atau data baru.
Menambahkan variabel yang memerlukan konstruktor pada titik sebelum penunjuk instruksi.
Perubahan yang memengaruhi kode yang memerlukan inisialisasi run-time.
Menambahkan handler pengecualian, dalam kasus tertentu.
Perubahan pada file sumber daya.
Perubahan pada kode dalam file baca-saja.
Perubahan pada kode tanpa file PDB yang sesuai.
Perubahan pada kode yang tidak memiliki file objek.
Memodifikasi lambda dalam skenario berikut:
- Ketika lambda memiliki anggota statis atau global.
- Ketika Anda meneruskan lambda ke
std::function. Metode ini menyebabkan pelanggaran ODR asli dan menghasilkan C1092.
Edit dan Lanjutkan tidak memperbarui pustaka statis. Jika Anda membuat perubahan dalam pustaka statis, eksekusi berlanjut dengan versi lama dan tidak ada peringatan yang dikeluarkan.
Skenario yang tidak didukung
Edit dan Lanjutkan untuk C/C++ tidak tersedia dalam skenario debugging berikut:
Men-debug aplikasi asli yang dikompilasi dengan /Zo (Enhance Optimized Debugging)
Proyek yang menggunakan toolset MSVC v120 dan sakelar C/C++
/bigobj. Edit dan Lanjutkan dengan/bigobjhanya didukung di alat build MSVC v140 dan yang lebih baru.Penelusuran kesalahan mode campuran (asli/terkelola).
Penelusuran kesalahan JavaScript.
Penelusuran kesalahan SQL.
Memecahkan masalah berkas pembuangan.
Mengedit kode setelah pengecualian yang tidak tertangani, ketika opsi Menggulung kembali tumpukan panggilan pada pengecualian yang tidak tertangani tidak dipilih.
Men-debug aplikasi dengan menggunakan Lampirkan ke alih-alih menjalankan aplikasi dengan memilih Mulai pada menu Debug .
Debugging kode yang dioptimalkan.
Men-debug versi lama kode Anda setelah versi baru gagal dibuat karena kesalahan build.
Menggunakan jalur pengkompilasi kustom (cl.exe). Untuk alasan keamanan, untuk kompilasi ulang file selama Edit dan Lanjutkan, Visual Studio selalu menggunakan pengkompilasi yang diinstal. Jika Anda menggunakan jalur kompilator kustom (misalnya, melalui variabel kustom
$(ExecutablePath)dalam file Anda*.props), peringatan ditampilkan dan Visual Studio kembali menggunakan pengkompilasi yang diinstal dari versi/arsitektur yang sama.Arsitektur Warisan/perangkat alat MSVC. Dengan toolset MSVC v140, debugger default mendukung Edit dan Lanjutkan dengan aplikasi X86 dan X64. Toolset warisan hanya mendukung aplikasi X86. Toolset yang lebih lama dari MSVC v120 harus menggunakan debugger warisan dengan memeriksa "Opsi > Debug > Umum > Gunakan Mode Kompatibilitas Asli" untuk menggunakan Edit dan Lanjutkan.
Batasan penghubungan
Opsi penghubung yang menonaktifkan Edit dan Continue
Opsi linker berikut menonaktifkan Edit dan Lanjutkan:
Pengaturan /OPT:REF, /OPT:ICF, atau /INCREMENTAL:NO menonaktifkan Edit dan Lanjutkan dengan peringatan berikut:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /OPT specificationPengaturan /ORDER, /RELEASE, atau /FORCE menonaktifkan Edit dan Lanjutkan dengan peringatan berikut:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /option specificationMengatur opsi apa pun yang mencegah pembuatan file database program (.pdb) menonaktifkan Edit dan Lanjutkan tanpa peringatan tertentu.
Batasan tautan ulang otomatis
Secara bawaan, Edit and Continue menyambungkan ulang program Anda di akhir sesi debugging untuk membuat eksekusi terbaru.
Edit dan Lanjutkan tidak dapat menautkan ulang program Anda jika Anda men-debugnya dari lokasi selain lokasi build asli. Pesan memberi tahu Anda bahwa Anda perlu membangun kembali secara manual.
Edit dan Lanjutkan tidak membangun kembali pustaka statis. Jika Anda membuat perubahan pada pustaka statis menggunakan Edit dan Lanjutkan, Anda perlu membangun ulang pustaka dan menautkan ulang aplikasi secara manual menggunakannya.
Edit dan Lanjutkan tidak memanggil langkah-langkah build kustom. Jika program Anda menggunakan langkah-langkah build kustom, Anda mungkin ingin membangun kembali secara manual sehingga langkah-langkah build kustom dapat dipanggil. Dalam situasi tersebut, Anda dapat menonaktifkan proses relinking setelah menggunakan fitur Edit dan Lanjutkan agar Anda diingatkan untuk melakukan pembentukan ulang secara manual.
Untuk menonaktifkan tautan ulang setelah Edit dan Lanjutkan:
Pada menu Debug , pilih Opsi dan Pengaturan.
Dalam kotak dialog Opsi , di bawah simpul Penelusuran Kesalahan , dan pilih simpul Edit dan Lanjutkan .
Kosongkan kotak centang Perubahan kode relink setelah debug.
Batasan header yang telah terkompilasi sebelumnya
Secara default, Edit dan Lanjutkan memuat dan memproses header yang telah dikompilasi sebelumnya di latar belakang untuk mempercepat pemrosesan perubahan kode. Memuat header yang telah dikompilasi memerlukan alokasi memori fisik, yang dapat menjadi masalah jika Anda mengkompilasi pada mesin dengan RAM terbatas. Anda dapat memastikan apakah ini merupakan masalah dengan menggunakan Windows Task Manager untuk mengetahui jumlah memori fisik yang tersedia saat Anda melakukan debug. Jika jumlah ini lebih besar dari ukuran header Anda yang telah dikommpilasikan sebelumnya, Edit dan Lanjutkan seharusnya tidak bermasalah. Jika jumlahnya kurang dari ukuran header pra-kompilasi, Anda dapat mencegah Edit and Continue memuat header pra-kompilasi di latar belakang.
Untuk menonaktifkan pemuatan latar belakang header yang telah dikommpilasikan sebelumnya untuk Edit dan Lanjutkan:
Pada menu Debug , pilih Opsi dan Pengaturan.
Dalam kotak dialog Opsi , di bawah simpul Penelusuran Kesalahan , dan pilih simpul Edit dan Lanjutkan .
Kosongkan kotak centang Izinkan Kompilasi Sebelumnya.
Batasan atribut IDL
Edit dan Lanjutkan tidak meregenerasi file bahasa definisi antarmuka (IDL). Oleh karena itu, perubahan atribut IDL tidak terlihat saat Anda melakukan debugging. Untuk melihat hasil perubahan atribut IDL, Anda harus menghentikan proses debugging dan menyusun kembali aplikasi Anda. Edit dan Lanjutkan tidak menghasilkan kesalahan atau peringatan jika atribut IDL telah berubah. Untuk informasi selengkapnya, lihat Atribut IDL.
Mendiagnosis masalah
Jika skenario Anda tidak sesuai dengan salah satu kondisi yang disebutkan di atas, Anda dapat mengumpulkan detail lebih lanjut dengan mengatur nilai registri DWORD berikut:
Buka Perintah Pengembang.
Jalankan perintah berikut:
VsRegEdit.exe set “C:\Program Files\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1VsRegEdit.exe set “C:\Program Files (x86)\Microsoft Visual Studio\[Version]\[YOUR EDITION]” HKCU Debugger NativeEncDiagnosticLoggingLevel DWORD 1
Mengatur nilai ini di awal sesi debug menyebabkan berbagai komponen Edit and Continue menghasilkan log verbose ke panel Jendela Output>Debug.