Aracılığıyla paylaş


Öğ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 yerel bir uygulamadan yönetilen kodda hata ayıklamayı dagösterir. Hata ayıklama aracı, Python veyerel kod karma modu gibi diğer karma mod hata ayıklama türlerini ve ASP.NET gibi uygulama türlerinde betik hata ayıklayıcıyı kullanmayı da 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
  • Karışık mod hata ayıklamayı yapılandırma
  • Hata ayıklayıcıyı başlatma
  • Yönetilen uygulamada kesme noktasına ulaşmak
  • 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

Visual Studio'ya sahip değilseniz, ücretsiz yüklemek için Visual Studio indirmeleri sayfasına giderek yükleyebilirsiniz.

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

Basit bir yerel DLL oluşturma

DLL projesi için dosyaları oluşturmak için:

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

    Başlangıç penceresini kapatmak için esc basın. Arama kutusunu açmak için Ctrl + Q yazın, Projeyi Boşalt yazın ve ardından C++ için Projeyi Boşalt'ı seçin. Görüntülenen Yeni projenizi yapılandırın iletişim kutusunda , Mixed_Mode_Debugging gibi bir ad yazın ve Oluştur'a tıklayın.

    Boş Proje proje şablonunu görmüyorsanız, Visual Studio Yükleyicisi'ni açan Araçlar>Araçlar ve Özellikleri Al...seçeneğine gidin. Visual Studio Yükleyicisi başlatılır. C++ iş yüküyle masaüstü geliştirme seçin ve ardından değiştir'iseçin.

    Visual Studio projeyi oluşturur.

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

    Eğer tüm öğe şablonlarını görmüyorsanız Tüm Şablonları Gösterseçin.

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

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

  4. Aşağıdaki kodu Mixed_Mode.cppkopyalayın:

    #include "Mixed_Mode.h"
    
  5. Çözüm Gezgini'nde, Üst Bilgi Dosyaları'ü seçin ve ardından Proje>Yeni Öğe Ekle'yi seçin. Ya da Üst Bilgi Dosyaları sağ tıklayın ve >Yeni ÖğeEkle'yi seçin.

    Eğer tüm öğe şablonlarını görmüyorsanız Tüm Şablonları Gösterseçin.

  6. Yeni Öğe iletişim kutusunda Başlık dosyası (.h)seçin. Adı alanına Mixed_Mode.h yazın ve Ekle'yi seçin.

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

  7. Aşağıdaki kodu Mixed_Mode.hkopyalayı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. Dosya>Tümünü Kaydet seçin veya dosyaları kaydetmek için Ctrl+Shift+S tuşlarına basın.

DLL projesini yapılandırmak ve oluşturmak için:

  1. Visual Studio araç çubuğunda Hata ayıklama konfigürasyonu ve x86 veya x64 platformunu seçin. Arama uygulamanız her zaman 64 bit modunda çalışan .NET Core olacaksa platform olarak x64 seçin.

  2. Çözüm Gezginiiçerisinde, 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. Özellikleri bölmesinin üst kısmında, YapılandırmaEtkin(Hata Ayıklama) olarak ayarlandığından ve Platformu araç çubuğunda ayarladığınızla aynı olduğundan emin olun: x64veya x86 platformu için Win32 .

    Önemli

    Platformu x86x64 veya tam tersi olarak değiştirirseniz, yeni platformun özelliklerini yeniden yapılandırmanız gerekir.

  4. Sol bölmedeki Yapılandırma Özellikleri altında, Bağlayıcı>Gelişmişöğesini seçin ve Giriş Noktası Yokyanındaki açılan listeden Yokseçeneğini belirleyin. Noolarak değiştirmeniz gerekiyorsa, Uygulaseçin.

  5. Yapılandırma Özelliklerialtında, Genel öğesini seçin ve Yapılandırma Türüyanındaki açılan listeden Dinamik Kitaplık (.dll)öğesini seçin. Uygula'ı seçin ve ardından Tamam'ı seçin.

    Yerel bir DLL'ye geçiş yap

  6. Çözüm Gezgini'nde projeyi seçin ve ardından Derleme>Derleme Çözümüseçin; veya F7tuşlarına basın; veya projeye sağ tıklayıp Derleme'yiseçin.

    Proje hatasız inşa edilmelidir.

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 basın. Arama kutusunu açmak için Ctrl + Q yazın, konsol yazın ve ardından .NET veya .NET Framework için C# Konsol Uygulaması'nı seçin.

    Ardından, Mixed_Mode_Calling_App gibi bir ad yazın ve İleri veya Oluştur seçeneğine tıklayın.

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

    Eğer doğru proje şablonunu görmüyorsanız, Visual Studio Yükleyicisi'ni açan Araçlar>Araçlar ve Özellikleri Al...gidin. Önkoşullarda açıklandığı gibi doğru .NET iş yükünü seçin ve ardındanDeğiştir'i seçin.

    Not

    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 bunu Çözüm Gezginiiçinde görüntüler.

  2. Program.cs içindeki 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, [DllImport] içindeki dosya yolunu yeni oluşturduğunuz Mixed_Mode_Debugging.dll dosya yolunuzla değiştirin. İpuçları için kod açıklamasına bakın. kullanıcı adı yer tutucusunun değiştirildiğinden emin olun.

  4. Dosyayı kaydetmek için Dosya >Program.cs Kaydet'i seçin veya Ctrl+S basın.

Karışık mod hata ayıklamayı yapılandırma

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

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

    .NET kodu

    Sol bölmede hata ayıklama seçin, ardından Hata ayıklama başlatma profilleri kullanıcı arabiriminiaçın'ı seçin, sonra Yerel kod hata ayıklama etkinleştir onay kutusunu seçin ve değişiklikleri kaydetmek için özellikler sayfasını kapatın.

    Karışık modda hata ayıklamayı etkinleştirme

    .NET Framework kodu

    Soldaki menüden hata ayıklama seçin. Ardından, Hata Ayıklayıcı motorları bölümünde Yerel kod hata ayıklamayı etkinleştir özelliğini seçin ve sonra değişiklikleri kaydetmek için özellikler sayfasını kapatın.

  3. .NET Framework uygulamasından bir x64 DLL'sini hedef alıyorsanız, platform hedefini Any CPU olarak 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 bir Yeni Yapılandırması oluşturun.

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

  1. C# projesinde Program.csaçın. En sol kenar boşluğuna tıklayarak, satırı seçip F9tuşuna basarak veya satıra sağ tıklayıp Kesme Noktası>Kesme Noktası Ekleseç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. F5tuşlarına 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 >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, F11tuşuna basın veya Hata Ayıklama>İçine Gir'i seçin.

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

    Yerel koda adımlayın

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

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

    • Autos ve Locals pencerelerindeki değişkene ve değerlerine bakın.

    • Hata ayıklayıcıda duraklatılırken, Watch pencerelerini ve Çağrı Yığını pencerelerini de kullanabilirsiniz.

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

  4. Shift+F11 tuşlarına basın veya yönetilen uygulamada yürütmeye devam etmek ve yeniden duraklatmak için Hata Ayıkla >seçin.

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

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

Sonraki adım

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