Öğretici: Aynı hata ayıklama oturumunda C# ve C++ hatalarını ayıklama

Visual Studio, karışık mod hata ayıklama olarak adlandırılan bir hata ayıklama oturumunda birden fazla hata ayıklayıcı türünü etkinleştirmenize olanak tanır. Bu öğreticide, tek bir hata ayıklama oturumunda hem yönetilen hem de yerel kodda hata ayıklamayı öğreneceksiniz.

Bu öğretici, yönetilen bir uygulamadan yerel kodda hata ayıklamayı gösterir, ancak yönetilen kodun hatalarını yerel bir uygulamadan da ayıklayabilirsiniz. Hata ayıklayıcı, Python ve yerel kodda hata ayıklama ve ASP.NET gibi uygulama türlerinde betik hata ayıklayıcısını kullanma gibi diğer karma mod hata ayıklama türlerini de destekler.

Bu öğreticide şunları yapacaksınız:

  • Basit bir yerel DLL oluşturma
  • DLL'yi çağırmak için basit bir .NET Core veya .NET Framework uygulaması oluşturma
  • Karma mod hata ayıklamayı yapılandırma
  • Hata ayıklayıcıyı başlatma
  • Yönetilen uygulamada kesme noktasına ulaşma
  • Yerel koda adımlayın

Önkoşullar

Aşağıdaki iş yükleriyle birlikte Visual Studio'yu yüklemiş olmanız gerekir:

  • C++ ile masaüstü geliştirme
  • .NET masaüstü geliştirme

Aşağıdaki iş yükleriyle birlikte Visual Studio'yu yüklemiş olmanız gerekir:

  • C++ ile masaüstü geliştirme
  • Oluşturmak istediğiniz uygulama türüne bağlı olarak .NET masaüstü geliştirme veya .NET Core platformlar arası geliştirme.

Visual Studio'nuz yoksa, ücretsiz yüklemek için Visual Studio indirmeleri sayfasına gidin.

Visual Studio yüklüyse ancak ihtiyacınız olan iş yükleri yoksa, Visual Studio Yeni Proje iletişim kutusunun sol bölmesindeki Visual Studio Yükleyicisi aç'ı seçin. Visual Studio Yükleyicisi ihtiyacınız olan iş yüklerini ve ardından Değiştir'i seçin.

Basit bir yerel DLL oluşturma

DLL projesine yönelik dosyaları oluşturmak için:

  1. Visual Studio'yu açın ve bir proje oluşturun.

    Başlangıç penceresini kapatmak için Esc tuşuna basın. Arama kutusunu açmak için Ctrl + Q yazın, Boş Proje yazın, Şablonlar'ı ve ardından C++ için Projeyi Boşalt'ı seçin. Görüntülenen iletişim kutusunda Oluştur'u seçin. Ardından, Mixed_Mode_Debugging gibi bir ad yazın ve Oluştur'a tıklayın.

    Boş Proje proje şablonunu görmüyorsanız Araçlar Araçları>ve Özellikleri Al...'e gidin ve Visual Studio Yükleyicisi açılır. Visual Studio Yükleyicisi başlatılır. C++ iş yüküyle Masaüstü geliştirme'yi ve ardından Değiştir'i seçin.

    Visual Studio projeyi oluşturur.

  2. Çözüm Gezgini Kaynak Dosyalar'ı ve ardından Proje>Yeni Öğe Ekle'yi seçin. Alternatif olarak, Kaynak Dosyalar'a sağ tıklayıp Yeni Öğe Ekle'yi>de seçebilirsiniz.

    Tüm öğe şablonlarını görmüyorsanız Tüm Şablonları Göster'i seçin.

  3. Yeni Öğe iletişim kutusunda C++ dosyası (.cpp) öğesini seçin. Ad alanına Mixed_Mode.cpp yazın ve Ekle'yi seçin.

    Visual Studio yeni C++ dosyasını Çözüm Gezgini ekler.

  4. Aşağıdaki kodu Mixed_Mode.cpp'ye kopyalayın:

    #include "Mixed_Mode.h"
    
  5. Çözüm Gezgini Üst Bilgi Dosyaları'nın ardından Proje>Yeni Öğe Ekle'yi seçin. İsterseniz Üst Bilgi Dosyaları'ne sağ tıklayıp Yeni Öğe Ekle'yi>de seçebilirsiniz.

    Tüm öğe şablonlarını görmüyorsanız Tüm Şablonları Göster'i seçin.

  6. Yeni Öğe iletişim kutusunda Üst bilgi dosyası (.h) öğesini seçin. Ad alanına Mixed_Mode.h yazın ve Ekle'yi seçin.

    Visual Studio yeni üst bilgi dosyasını Çözüm Gezgini ekler.

  7. Aşağıdaki kodu Mixed_Mode.h içine kopyalayın:

    #ifndef MIXED_MODE_MULTIPLY_HPP
    #define MIXED_MODE_MULTIPLY_HPP
    
    extern "C"
    {
      __declspec(dllexport) int __stdcall mixed_mode_multiply(int a, int b) {
        return a * b;
      }
    }
    #endif
    
  8. Dosyaları kaydetmek için Dosya>Tümünü Kaydet'i seçin veya Ctrl+Shift+S tuşlarına basın.

DLL projesini yapılandırmak ve derlemek için:

  1. Visual Studio araç çubuğunda Hata ayıklama yapılandırması ve x86 veya x64 platformu'nu seçin. Arama uygulamanız her zaman 64 bit modunda çalışan .NET Core olacaksa platform olarak x64'i seçin.

  2. Çözüm Gezgini Mixed_Mode_Debugging proje düğümünü seçin ve Özellikler simgesini seçin veya proje düğümüne sağ tıklayıp Özellikler'i seçin.

  3. Özellikler bölmesinin üst kısmında Yapılandırma'nın Etkin(Hata Ayıklama) olarak ayarlandığından ve Platform'unaraç çubuğunda ayarladığınızla aynı olduğundan emin olun: x64 veya x86 platformu için Win32.

    Önemli

    Platformu x86'dan x64'e veya tersine değiştirirseniz, yeni platformun özelliklerini yeniden yapılandırmanız gerekir.

  4. Sol bölmedeki Yapılandırma Özellikleri'nin altında Bağlayıcı>Gelişmiş'i seçin ve Giriş Noktası Yok'un yanındaki açılan listede Hayır'ı seçin. Hayır olarak değiştirmeniz gerekiyorsa Uygula'yı seçin.

  5. Yapılandırma Özellikleri'nin altında Genel'i seçin ve Yapılandırma Türü'nin yanındaki açılan listede Dinamik Kitaplık (.dll) öğesini seçin. Uygula’yı ve sonra Tamam’ı seçin.

    Switch to a native DLL

  6. Çözüm Gezgini'de projeyi seçin ve ardından Derleme Çözümü Oluştur'a> tıklayın, F7 tuşuna basın veya projeye sağ tıklayıp Oluştur'a tıklayın.

    Projenin hatasız oluşturması gerekir.

DLL'yi çağırmak için basit bir yönetilen uygulama oluşturma

  1. Visual Studio'yu açın ve yeni bir proje oluşturun.

    Başlangıç penceresini kapatmak için Esc tuşuna basın. Arama kutusunu açmak için Ctrl + Q yazın, konsol yazın, Şablonlar'ı seçin ve ardından C# için .NET Core konsol uygulaması veya Konsol Uygulaması (.NET Framework) seçeneğini belirleyin. Görüntülenen iletişim kutusunda İleri'yi seçin.

    Ardından, Mixed_Mode_Calling_App gibi bir ad yazın ve İleri'ye veya Oluştur'a (hangi seçenek varsa) tıklayın.

    .NET Core için önerilen hedef çerçeveyi veya .NET 8'i seçin ve ardından Oluştur'u seçin.

    Doğru proje şablonunu görmüyorsanız Araçlar Araç>ve Özellik Al... seçeneğine gidin ve Visual Studio Yükleyicisi açılır. Önkoşullarda açıklandığı gibi doğru .NET iş yükünü seçin ve ardından Değiştir'i seçin.

    Dekont

    Yeni yönetilen projeyi mevcut C++ çözümünüzde de ekleyebilirsiniz. Karma mod hata ayıklama görevini daha zor hale getirmek için projeyi yeni bir çözümde oluşturuyoruz.

    Visual Studio boş projeyi oluşturur ve Çözüm Gezgini görüntüler.

  2. Program.cs dosyasındaki tüm kodu aşağıdaki kodla değiştirin:

    using System;
    using System.Runtime.InteropServices;
    
    namespace Mixed_Mode_Calling_App
    {
        public class Program
        {
            // Replace the file path shown here with the
            // file path on your computer. For .NET Core, the typical (default) path
            // for a 64-bit DLL might look like this:
            // C:\Users\username\source\repos\Mixed_Mode_Debugging\x64\Debug\Mixed_Mode_Debugging.dll
            // Here, we show a typical path for a DLL targeting the **x86** option.
            [DllImport(@"C:\Users\username\source\repos\Mixed_Mode_Debugging\Debug\Mixed_Mode_Debugging.dll", EntryPoint =
            "mixed_mode_multiply", CallingConvention = CallingConvention.StdCall)]
            public static extern int Multiply(int x, int y);
            public static void Main(string[] args)
            {
                int result = Multiply(7, 7);
                Console.WriteLine("The answer is {0}", result);
                Console.ReadKey();
            }
        }
    }
    
  3. Yeni kodda, içindeki [DllImport] dosya yolunu yeni oluşturduğunuz Mixed_Mode_Debugging.dll dosyasının yoluyla değiştirin. İpuçları için kod açıklamasına bakın. Kullanıcı adı yer tutucusunun değiştirdiğinden emin olun.

  4. Dosya>Kaydetme Programı.cs'yi seçin veya dosyayı kaydetmek için Ctrl+S tuşuna basın.

Karma mod hata ayıklamayı yapılandırma

  1. Çözüm Gezgini Mixed_Mode_Calling_App proje düğümünü seçin ve Özellikler simgesini seçin veya proje düğümüne sağ tıklayıp Özellikler'i seçin.

  2. Özelliklerde yerel kod hata ayıklamasını etkinleştirin.

    Sol bölmede Hata Ayıkla'yı seçin, Hata ayıklama başlatma profilleri kullanıcı arabirimini aç'ı seçin, ardından Yerel kod hata ayıklamasını etkinleştir onay kutusunu seçin ve ardından değişiklikleri kaydetmek için özellikler sayfasını kapatın. Enable mixed mode debugging

    Sol bölmede Hata Ayıkla'yı seçin, Yerel kod hata ayıklamasını etkinleştir onay kutusunu seçin ve sonra değişiklikleri kaydetmek için özellikler sayfasını kapatın.

    Enable mixed mode debugging

  3. Bir .NET Framework uygulamasından bir x64 DLL'yi hedef alıyorsanız, platform hedefini Herhangi bir CPU olan x64 olarak değiştirin. Bunu yapmak için Hata Ayıklama araç çubuğunun Çözüm Platformu açılan listesinden Configuration Manager'ı seçmeniz gerekebilir. Ardından, doğrudan x64'e geçemiyorsanız, x64'i hedefleyen yeni bir Yapılandırma oluşturun.

Kesme noktası ayarlama ve hata ayıklamayı başlatma

  1. C# projesinde Program.cs dosyasını açın. En sol kenar boşluğuna tıklayıp F9 tuşuna basarak veya satıra sağ tıklayıp Kesme Noktası Ekle Kesme Noktası'nı>seçerek aşağıdaki kod satırında bir kesme noktası ayarlayın.

    int result = Multiply(7, 7);
    

    Sol kenar boşluğunda kesme noktasını ayarladığınız kırmızı bir daire görüntülenir.

  2. F5 tuşuna basın, Visual Studio araç çubuğundaki yeşil oku seçin veya hata ayıklamayı başlatmak için Hata Ayıklamayı>Başlat Hata Ayıklama'yı seçin.

    Hata ayıklayıcı, ayarladığınız kesme noktasında duraklatılır. Sarı ok, hata ayıklayıcının şu anda nerede duraklatıldığını gösterir.

Yerel koda girip çıkma

  1. Yönetilen uygulamada hata ayıklama duraklatılırken F11 tuşuna basın veya Hata Ayıklama>Adımı'nı seçin.

    Mixed_Mode.h yerel üst bilgi dosyası açılır ve hata ayıklayıcının duraklatıldığı sarı oku görürsünüz.

    Step into native code

    Step into native code

  2. Artık kesme noktalarını ayarlayıp isabet edebilir ve yerel veya yönetilen koddaki değişkenleri inceleyebilirsiniz.

    • Değerlerini görmek için kaynak koddaki değişkenlerin üzerine gelin.

    • Otomatik ve Yerel Ayarlar pencerelerindeki değişkene ve değerlerine bakın.

    • Hata ayıklayıcıda duraklatılmış durumdayken gözcü pencerelerini ve Çağrı Yığını penceresini de kullanabilirsiniz.

  3. Hata ayıklayıcıyı bir satır ilerletmek için F11 tuşuna yeniden basın.

  4. Yürütmeye devam etmek ve yönetilen uygulamada yeniden duraklatmak için Shift+F11'e basın veya Hata Ayıkla>Adım Çıkışı'nı seçin.

  5. Uygulamada hata ayıklamaya devam etmek için F5 tuşuna basın veya yeşil oku seçin.

Tebrikler! Karma mod hata ayıklama öğreticisini tamamladınız.

Sonraki adım

Bu öğreticide, karma mod hata ayıklamayı etkinleştirerek yönetilen bir uygulamadan yerel kodda hata ayıklamayı öğrendiniz. Diğer hata ayıklayıcı özelliklerine genel bakış için bkz: