Aracılığıyla paylaş


İyileştirilmiş Kodda Hata Ayıklama

Not

Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir. Ayarlarınızı değiştirmek için Araçlar menüsünden Ayarlar İçeri ve Dışarı Aktar'ı seçin. Daha fazla bilgi için bkz . Tüm ayarları sıfırlama.

Not

/Zo (İyileştirilmiş Hata Ayıklamayı İyileştir) derleyici seçeneği (Visual Studio Güncelleştirme 3'te kullanıma sunulmuştur), iyileştirilmiş kod (/Od derleyici seçeneğiyle derlenmeyen projeler) için daha zengin hata ayıklama bilgileri oluşturur. Bkz. /O Seçenekleri (Kodu İyileştirme)). Bu, yerel değişkenlerde ve iç işlevlerde hata ayıklamaya yönelik geliştirilmiş desteği içerir.

Düzenle ve Devam Et, /Zo derleyici seçeneği kullanıldığında devre dışı bırakılır.

Derleyici kodu iyileştirdiğinde, yönergeleri yeniden konumlandırır ve yeniden düzenler. Bu, daha verimli bir şekilde derlenmiş kod elde edilir. Bu yeniden düzenleme nedeniyle, hata ayıklayıcı her zaman bir dizi yönergeye karşılık gelen kaynak kodunu belirleyemez.

İyileştirme şu etkiyi etkileyebilir:

  • İyileştirici tarafından kaldırılabilir veya hata ayıklayıcının anlamadığı konumlara taşınabilen yerel değişkenler.

  • İyileştirici kod bloklarını birleştirdiğinde değiştirilen bir işlevin içindeki konumlar.

  • çağrı yığınındaki çerçevelerin işlev adları, iyileştirici iki işlevi birleştirirse yanlış olabilir.

    Çağrı yığınında gördüğünüz çerçeveler neredeyse her zaman doğrudur, ancak tüm çerçeveler için simgeleriniz olduğu varsayılır. Yığın bozulması varsa, derleme dilinde yazılmış işlevleriniz varsa veya çağrı yığınında eşleşen simgeler olmayan işletim sistemi çerçeveleri varsa, çağrı yığınındaki çerçeveler yanlış olacaktır.

    Genel ve statik değişkenler her zaman doğru şekilde gösterilir. Yapı düzeni de öyle. Bir yapıya işaretçiniz varsa ve işaretçinin değeri doğruysa, yapının her üye değişkeni doğru değeri gösterir.

    Bu sınırlamalar nedeniyle, mümkünse programınızın iyileştirilmemiş bir sürümünü kullanarak hata ayıklamanız gerekir. Varsayılan olarak, C++ programının Hata ayıklama yapılandırmasında iyileştirme kapalıdır ve Sürüm yapılandırmasında açıktır.

    Ancak, bir hata yalnızca programın iyileştirilmiş bir sürümünde görünebilir. Bu durumda, iyileştirilmiş kodda hata ayıklamanız gerekir.

Hata ayıklama derleme yapılandırmasında iyileştirmeyi açmak için

  1. Yeni bir proje oluşturduğunuzda hedefi seçin Win32 Debug . Win32 Debug Programınız tam olarak hata ayıklanana ve hedef Win32 Release oluşturmaya hazır olana kadar hedefi kullanın. Derleyici hedefi iyileştirmez Win32 Debug .

  2. Çözüm Gezgini'da projeyi seçin.

  3. Görünüm menüsünde Özellik Sayfaları'na tıklayın.

  4. Özellik Sayfaları iletişim kutusunda Yapılandırma açılan listesinde seçili olduğundan emin olunDebug.

  5. Soldaki klasör görünümünde C/C++ klasörünü seçin.

  6. C++ klasörünün altında öğesini seçinOptimization.

  7. Sağdaki özellikler listesinde öğesini bulun Optimization. Yanındaki ayar büyük olasılıkla /Od şeklindedirDisabled (.) Diğer seçeneklerden birini seçin (Minimum Size``(/O1),Maximum Speed``( /O2),Full Optimization``( /Ox) veya ).Custom

  8. seçeneğini OptimizationbelirlediysenizCustom, artık özellikler listesinde gösterilen diğer özelliklerden herhangi biri için seçenekleri ayarlayabilirsiniz.

  9. Proje özellikleri sayfasının Yapılandırma Özellikleri, C/C++, Komut Satırı düğümünü seçin ve Ek Seçenekler metin kutusuna /Zo) ekleyin(.

    Uyarı

    Ekleme işlemi /Zo Düzenle ve Devam Et'i devre dışı bırakır.

    İyileştirilmiş kodda hata ayıklarken, gerçekte hangi yönergelerin oluşturulduğunu ve yürütüldiğini görmek için Ayrıştırma penceresini kullanın. Kesme noktaları ayarladığınızda, kesme noktasının bir yönergeyle birlikte taşınabileceğini bilmeniz gerekir. Örneğin, aşağıdaki kodu göz önünde bulundurun:

for (x=0; x<10; x++)

Bu satırda bir kesme noktası ayarladığınızı varsayalım. Kesme noktasına 10 kez isabet edilmesi beklenebilir, ancak kod iyileştirilirse kesme noktasına yalnızca bir kez isabet edilir. Bunun nedeni, ilk yönergenin değerini 0 olarak belirlemesidir x . Derleyici bunun yalnızca bir kez yapılması gerektiğini algılar ve döngünün dışına taşır. Kesme noktası da onunla birlikte hareket eder. Karşılaştırma ve artırma x yönergeleri döngünün içinde kalır. Ayrıştırma penceresini görüntülediğinizde, adım birimi otomatik olarak daha fazla denetim için Yönerge olarak ayarlanır ve bu, iyileştirilmiş kodda ilerlerken kullanışlıdır.