Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C++ projeleri için Düzenle ve Devam Et, çoğu kod değişikliği türünü işler. Ancak, program yürütme sırasında bazı değişiklikler uygulanamaz. Bu değişiklikleri uygulamak için yürütmeyi durdurmanız ve kodun yeni bir sürümünü oluşturmanız gerekir.
Visual Studio'da C++ için Düzenle ve Devam Et ile çalışma hakkında bilgi için Düzenle ve Devam Et (C++)'ye bakın.
Gereksinimler
Yapı ayarları (Proje > Özellikleri)
C/C++ > Genel > Hata Ayıklama Bilgi Biçimi: Düzenleme ve Devam Için Program Veritabanı (
/ZI)Bağlayıcı > Genel > Artımlı Bağlamayı Etkinleştir: Evet (
/INCREMENTAL)Uyumsuz bağlayıcı ayarları (örneğin
/SAFESEH,/OPT:...) derleme sırasında LNK4075 uyarısına neden olabilir. Örnek:LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification
Hata ayıklayıcısı ayarları (Hata Ayıklama > Seçenekleri)
Hata Ayıklama (veya Araçlar) >Seçenekleri bölmesini açın ve Tüm Ayarlar>Hata Ayıklama>.NET/C++ Anında Yeniden Yükleme bölümünü genişletin.
Hata Ayıklama (veya Araçlar) >Seçenekler iletişim kutusunu açın ve Hata Ayıklama>.NET/C++ Hot Reload bölümünü genişletin.
Özelliği etkinleştirmek için aşağıdaki seçeneklerden birini veya tümünü seçin:
Hot Reload'u Etkinleştir: Hata ayıklayıcıyla başlatıldığında Hot Reload'u etkinleştirir (F5).
Hata ayıklama olmadan başlatılırken Sıcak Yeniden Yüklemeyi etkinleştir: Hata ayıklama olmadan başlatıldığında Sıcak Yeniden Yüklemeyi etkinleştirir (Ctrl + ).
Dosya Kaydetme sırasında Sık Erişimli Yeniden Yüklemeyi Etkinleştir: Dosya kaydedildiğinde Sık Erişimli Yeniden Yüklemeyi etkinleştirir.
Günlük ayrıntı düzeyi: Anında Yeniden Yükleme etkinleştirildiğinde, günlük ayrıntı düzeyini ayarlayın. En Az (varsayılan), Ayrıntılı veya Tanılama seçeneklerinden birini belirleyin.
Bu ayarları değiştirmek üzerinde çalıştığınız tüm projeleri etkiler. Bir ayarı değiştirdikten sonra uygulamanızı yeniden oluşturmanız gerekmez. Uygulamanızı komut satırından veya bir makefile dosyasından derlerseniz ancak Visual Studio ortamında hata ayıklarsanız, /ZI seçeneğini ayarlarsanız "Düzenleme ve Devam Et" özelliğini kullanmaya devam edebilirsiniz.
Hata Ayıklama (veya Araçlar) >Seçenekleri iletişim kutusunda Hata Ayıklama>Genel bölümünü genişletin ve Yerel Düzenlemeyi Etkinleştir ve Devam Et onay kutusunu seçin.
Uyumlu olmayan derleyici veya bağlayıcı ayarları, Düzenle ve Devam Et sırasında hataya neden olur.
Örnek: 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.
Desteklenmeyen değişiklikler
Aşağıdaki C/C++ değişiklikleri hata ayıklama oturumu sırasında uygulanamaz. Bu değişikliklerden herhangi birini yapıp kod değişikliklerini uygulamayı denerseniz , Çıkış penceresinde bir hata veya uyarı iletisi görüntülenir.
Genel veya statik verilerde yapılan çoğu değişiklik.
Başka bir makineden kopyalanan ve yerel olarak oluşturulmayan yürütülebilir dosyalarda yapılan değişiklikler.
Bir sınıfın veri üyeleri gibi bir nesnenin düzenini etkileyen veri türünde yapılan değişiklikler.
64k bayttan fazla yeni kod veya veri ekleme.
Yönerge işaretçisinin önüne bir noktada oluşturucu gerektiren değişkenler ekleme.
Çalışma zamanı başlatma gerektiren kodu etkileyen değişiklikler.
Bazı durumlarda özel durum işleyicileri ekleme.
Kaynak dosyalarındaki değişiklikler.
Salt okunur dosyalarda kodda yapılan değişiklikler.
İlgili PDB dosyası olmadan kodda yapılan değişiklikler.
Nesne dosyası olmayan kodda yapılan değişiklikler.
Aşağıdaki senaryolarda lambdaları değiştirme:
- Lambda'ların statik veya global bir üyesi olduğunda.
- Bir
std::functionişlevine lambda geçtiğinizde. Bu yöntem orijinal bir ODR ihlaline neden olur ve C1092 ile sonuçlanmaktadır.
Düzenle ve Devam Et statik kitaplıkları güncelleştirmez. Statik kitaplıkta değişiklik yaparsanız yürütme eski sürümle devam eder ve hiçbir uyarı yapılmaz.
Desteklenmeyen senaryolar
C/C++ için Düzenle ve Devam Et, aşağıdaki hata ayıklama senaryolarında kullanılamaz:
/Zo ile derlenen yerel uygulamalarda hata ayıklama (İyileştirilmiş Hata Ayıklamayı İyileştir)
MSVC v120 araç takımını ve C/C++
/bigobjanahtarını kullanan projeler. Düzenle ve Devam Et/bigobjyalnızca MSVC v140 ve üzeri derleme araçlarında desteklenir.Karma mod (yerel/yönetilen) hata ayıklama.
JavaScript hata ayıklama.
SQL hata ayıklama.
Döküm dosyasında hata ayıklama.
İşlenmeyen bir özel durum sonrası, işlenmeyen özel durumlarda çağrı yığını çöz seçeneği seçilmediğinde kod üzerinde düzenleme yapılıyor.
Hata Ayıkla menüsünde Başlat'ı seçerek uygulamayı çalıştırmak yerine Ekle'yi kullanarak uygulamada hata ayıklama.
İyileştirilmiş kodda hata ayıklama.
Derleme hataları nedeniyle yeni bir sürüm oluşturulamadıktan sonra kodunuzun eski bir sürümünde hata ayıklama.
Özel derleyici (cl.exe) yolu kullanma. Güvenlik nedenleriyle, Düzenle ve Devam Et sırasında bir dosyanın yeniden derlenişi için Visual Studio her zaman yüklü derleyiciyi kullanır. Özel bir derleyici yolu kullanıyorsanız (örneğin, dosyanızdaki
$(ExecutablePath)özel*.propsbir değişken aracılığıyla), bir uyarı görüntülenir ve Visual Studio aynı sürümün/mimarinin yüklü derleyicisini kullanmaya geri döner.Eski Mimariler/MSVC araç kümeleri. MSVC v140 araç takımıyla, varsayılan hata ayıklayıcı hem X86 hem de X64 uygulamalarıyla Düzenle ve Devam Et'i destekler. Eski araç kümeleri yalnızca X86 uygulamalarını destekler. MSVC v120'den eski araç kümeleri, Düzenle ve Devam Et'i kullanmak için "Hata Ayıklama > Seçenekleri > Genel > Yerel Uyumluluk Modunu Kullan" seçeneğini işaretleyerek eski hata ayıklayıcıyı kullanmalıdır.
Bağlama sınırlamaları
Düzenle ve Devam Et'i devre dışı bırakan bağlayıcı seçenekler
Aşağıdaki bağlayıcı seçenekleri Düzenle ve Devam Et'i devre dışı bırakır:
/OPT:REF, /OPT:ICF veya /INCREMENTAL:NO ayarı Düzenle ve Devam Et'i şu uyarıyla devre dışı bırakır:
LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /OPT specification/ORDER, /RELEASE veya /FORCE ayarı, Düzenle ve Devam Et'i aşağıdaki uyarıyla devre dışı bırakır:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /option specificationProgram veritabanı (.pdb) dosyasının oluşturulmasını engelleyen herhangi bir seçeneğin ayarlanması, Düzenle ve Devam Et'i belirli bir uyarı olmadan devre dışı bırakır.
Otomatik yeniden bağlama sınırlamaları
Varsayılan olarak, 'Edit and Continue', güncel bir yürütülebilir dosya oluşturmak için hata ayıklama oturumunun sonunda programınızı yeniden bağlar.
Orijinal derleme konumunun dışında bir konumdan hata ayıklıyorsanız, "Düzenle ve Devam Et" özelliği programınızın bağlarını yeniden oluşturamaz. İleti, el ile yeniden oluşturmanız gerektiğini bildirir.
Düzenle ve Devam Et statik kitaplıkları yeniden oluşturmaz. Düzenle ve Devam Et'i kullanarak statik kitaplıkta değişiklik yaparsanız, kitaplığı el ile yeniden oluşturmanız ve uygulamaları kullanarak yeniden bağlamanız gerekir.
Düzenle ve Devam Et özel derleme adımlarını çağırmaz. Programınız özel derleme adımları kullanıyorsa, özel derleme adımlarının çağrılabilmesi için el ile yeniden derlemek isteyebilirsiniz. Bu durumda, el ile yeniden derlemeniz istendiğinden emin olmak için Düzenle ve Devam Et'in ardından yeniden bağlantıyı devre dışı bırakabilirsiniz.
Düzenle ve Devam Et'in ardından yeniden bağlantıyı devre dışı bırakmak için:
Hata Ayıkla menüsünde Seçenekler ve Ayarlar'ı seçin.
Seçenekler iletişim kutusunda, Hata Ayıklama düğümü altında Düzenle ve Devam Et düğümünü seçin.
Hata ayıklama sonrası kod değişikliklerini yeniden bağlama onay kutusunu temizleyin.
Önceden derlenmiş başlık sınırlamaları
Varsayılan olarak, Düzenle ve Devam Et kod değişikliklerinin işlenmesini hızlandırmak için arka planda önceden derlenmiş üst bilgileri yükler ve işler. Önceden derlenmiş üst bilgilerin yüklenmesi için fiziksel belleğin ayrılması gerekir. Bu, sınırlı RAM'e sahip bir makinede derlemeniz durumunda sorun olabilir. Hata ayıklarken kullanılabilir fiziksel bellek miktarını belirlemek için Windows Görev Yöneticisi'ni kullanarak bunun bir sorun olup olmadığını belirleyebilirsiniz. Bu tutar önceden derlenmiş üst bilgilerinizin boyutundan büyükse, Edit and Continue ile ilgili bir sorun olmaması gerekir. Miktar önceden derlenmiş üst bilgilerinizin boyutundan küçükse, Düzenle ve Devam Et'in önceden derlenmiş üst bilgileri arka planda yüklemesini engelleyebilirsiniz.
Düzenle ve Devam Et için önceden derlenmiş üst bilgilerin arka plan yüklemesini devre dışı bırakmak için:
Hata Ayıkla menüsünde Seçenekler ve Ayarlar'ı seçin.
Seçenekler iletişim kutusunda, Hata Ayıklama düğümü altında Düzenle ve Devam Et düğümünü seçin.
Ön Derlemeye İzin Ver onay kutusunu temizleyin.
IDL öznitelik sınırlamaları
Düzenle ve Devam Et, arabirim tanım dili (IDL) dosyalarını yeniden oluşturmaz. Bu nedenle, hata ayıklarken IDL özniteliklerindeki değişiklikler yansıtılmaz. IDL özniteliklerinde yapılan değişikliklerin sonucunu görmek için hata ayıklamayı durdurmanız ve uygulamanızı yeniden oluşturmanız gerekir. Düzenle ve Devam Et, IDL öznitelikleri değiştiyse hata veya uyarı oluşturmaz. Daha fazla bilgi için bkz. IDL Öznitelikleri.
Sorunları tanılama
Senaryonuz yukarıda belirtilen koşullardan herhangi birine uymuyorsa, aşağıdaki DWORD kayıt defteri değerini ayarlayarak daha fazla ayrıntı toplayabilirsiniz:
Bir Geliştirici Komut İstemi açın.
Aşağıdaki komutu çalıştırın:
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
Hata ayıklama oturumunun başlangıcında bu değerin ayarlanması, Düzenle ve Devam Et'in çeşitli bileşenlerinin Çıkış Penceresi>Hata Ayıklama bölmesine ayrıntılı günlük kaydı eklemesine neden olur.