Sdílet prostřednictvím


Kurz: Ladění C# a C++ ve stejné ladicí relaci

Visual Studio umožňuje povolit více než jeden typ ladicího programu v ladicí relaci, která se nazývá ladění v smíšeném režimu. V tomto kurzu se naučíte ladit spravovaný i nativní kód v jedné relaci ladění.

V tomto kurzu se dozvíte, jak ladit nativní kód ze spravované aplikace, ale můžete také ladit spravovaný kód z nativní aplikace. Ladicí program také podporuje další typy ladění ve smíšeném režimu, jako je ladění Pythonu a nativní kód, a použití ladicího programu skriptu v typech aplikací, jako je ASP.NET.

V tomto kurzu:

  • Vytvoření jednoduché nativní knihovny DLL
  • Vytvoření jednoduché aplikace .NET Core nebo .NET Framework pro volání knihovny DLL
  • Konfigurace ladění ve smíšeném režimu
  • Spuštění ladicího programu
  • Dosažení zarážky ve spravované aplikaci
  • Krokování do nativního kódu

Požadavky

Musíte mít nainstalovanou sadu Visual Studio s následujícími úlohami:

  • Vývoj desktopových aplikací pomocí jazyka C++
  • Vývoj desktopových aplikací .NET

Musíte mít nainstalovanou sadu Visual Studio s následujícími úlohami:

  • Vývoj desktopových aplikací pomocí jazyka C++
  • Vývoj desktopových aplikací .NET nebo vývoj pro různé platformy .NET Core v závislosti na typu aplikace, kterou chcete vytvořit.

Pokud visual Studio nemáte, přejděte na stránku pro stažení sady Visual Studio a nainstalujte ji zdarma.

Pokud máte nainstalovanou sadu Visual Studio, ale nemáte potřebné úlohy, vyberte v levém podokně dialogového okna Nový projekt sady Visual Studio možnost Otevřít Instalační program pro Visual Studio. V Instalační program pro Visual Studio vyberte požadované úlohy a pak vyberte Upravit.

Vytvoření jednoduché nativní knihovny DLL

Vytvoření souborů pro projekt knihovny DLL:

  1. Otevřete Visual Studio a vytvořte projekt.

    Stisknutím klávesy Esc zavřete úvodní okno. Pokud chcete otevřít vyhledávací pole, zadejte Prázdný projekt, zvolte Šablony a pak zvolte Prázdný projekt pro C++. V zobrazeném dialogovém okně zvolte Vytvořit. Potom zadejte název, například Mixed_Mode_Debugging , a klikněte na Vytvořit.

    Pokud šablonu prázdného projektu projektu nevidíte, přejděte do části Nástroje Získat nástroje>a funkce..., čímž se otevře Instalační program pro Visual Studio. Spustí se instalační program pro Visual Studio. Zvolte vývoj desktopových aplikací pomocí úlohy C++ a pak zvolte Upravit.

    Visual Studio vytvoří projekt.

  2. V Průzkumník řešení vyberte Zdrojové soubory a pak vyberte Přidat novou položku projektu>. Nebo klikněte pravým tlačítkem na Zdrojové soubory a vyberte Přidat>novou položku.

    Pokud nevidíte všechny šablony položek, zvolte Zobrazit všechny šablony.

  3. V dialogovém okně Nová položka vyberte soubor C++ (.cpp). Do pole Název zadejte Mixed_Mode.cppa pak vyberte Přidat.

    Visual Studio přidá nový soubor C++ do Průzkumník řešení.

  4. Do souboru Mixed_Mode.cpp zkopírujte následující kód:

    #include "Mixed_Mode.h"
    
  5. V Průzkumník řešení vyberte Soubory hlaviček a pak vyberte Přidat novou položku projektu>. Nebo klikněte pravým tlačítkem na Soubory záhlaví a vyberte Přidat>novou položku.

    Pokud nevidíte všechny šablony položek, zvolte Zobrazit všechny šablony.

  6. V dialogovém okně Nová položka vyberte soubor záhlaví (.h). Do pole Název zadejte Mixed_Mode.h a pak vyberte Přidat.

    Visual Studio přidá nový hlavičkový soubor do Průzkumník řešení.

  7. Do souboru Mixed_Mode.h zkopírujte následující kód:

    #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. Vyberte Uložit soubor vše nebo soubory uložte stisknutím kombinace kláves Ctrl+Shift+S.>

Konfigurace a sestavení projektu knihovny DLL:

  1. Na panelu nástrojů sady Visual Studio vyberte Ladit konfiguraci a platformu x86 nebo x64. Pokud bude vaše volající aplikace .NET Core, která vždy běží v 64bitovém režimu, vyberte jako platformu x64 .

  2. V Průzkumník řešení vyberte uzel projektu Mixed_Mode_Debugging a vyberte ikonu Vlastnosti nebo klikněte pravým tlačítkem myši na uzel projektu a vyberte Vlastnosti.

  3. V horní části podokna Vlastnosti se ujistěte, že je konfigurace nastavená na Active(Debug) a platforma je stejná jako platforma , kterou jste nastavili na panelu nástrojů: x64 nebo Win32 pro platformu x86.

    Důležité

    Pokud přepnete platformu z x86 na x64 nebo naopak, musíte změnit konfiguraci vlastností pro novou platformu.

  4. V části Vlastnosti konfigurace v levém podokně vyberte Linker>Upřesnit a v rozevíracím seznamu vedle položky Bez vstupního bodu vyberte Ne. Pokud jste ho museli změnit na Ne, vyberte Použít.

  5. V části Vlastnosti konfigurace vyberte Obecné a v rozevíracím seznamu vedle položky Typ konfigurace vyberte Dynamická knihovna (.dll). Vyberte Apply (Použít) a pak vyberte OK.

    Switch to a native DLL

  6. Vyberte projekt v Průzkumník řešení a pak vyberte Sestavit>řešení, stiskněte klávesu F7 nebo klikněte pravým tlačítkem myši na projekt a vyberte Sestavit.

    Projekt by se měl sestavit bez chyb.

Vytvoření jednoduché spravované aplikace pro volání knihovny DLL

  1. Otevřete Visual Studio a vytvořte nový projekt.

    Stisknutím klávesy Esc zavřete úvodní okno. Pokud chcete otevřít vyhledávací pole, zadejte konzolu, zvolte Šablony a pak zvolte Konzolová aplikace pro .NET Core nebo konzolovou aplikaci (.NET Framework) pro C#. V zobrazeném dialogovém okně zvolte Další.

    Potom zadejte název, například Mixed_Mode_Calling_App , a klepněte na tlačítko Další nebo Vytvořit podle toho, která možnost je k dispozici.

    Pro .NET Core zvolte buď doporučenou cílovou architekturu, nebo .NET 8, a pak zvolte Vytvořit.

    Pokud nevidíte správnou šablonu projektu, přejděte na Nástroje Získat nástroje>a funkce..., čímž se otevře Instalační program pro Visual Studio. Zvolte správnou úlohu .NET, jak je popsáno v požadavcích, a pak zvolte Upravit.

    Poznámka:

    Nový spravovaný projekt můžete také přidat do stávajícího řešení C++. Projekt vytváříme v novém řešení, abychom ztížili úlohu ladění v smíšeném režimu.

    Visual Studio vytvoří prázdný projekt a zobrazí ho v Průzkumník řešení.

  2. Nahraďte veškerý kód v souboru Program.cs následujícím kódem:

    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. V novém kódu nahraďte cestu [DllImport] k souboru cestou k souboru Mixed_Mode_Debugging.dll, kterou jste právě vytvořili. Nápovědu najdete v komentáři ke kódu. Nezapomeňte nahradit zástupný symbol uživatelského jména .

  4. Vyberte Soubor>Uložit program.cs nebo stisknutím kláves Ctrl+S soubor uložte.

Konfigurace ladění ve smíšeném režimu

  1. V Průzkumník řešení vyberte uzel projektu Mixed_Mode_Calling_App a vyberte ikonu Vlastnosti nebo klikněte pravým tlačítkem myši na uzel projektu a vyberte Vlastnosti.

  2. Povolte ladění nativního kódu ve vlastnostech.

    V levém podokně vyberte Ladit, vyberte Otevřít uživatelské rozhraní spouštěcích profilů ladění, pak zaškrtněte políčko Povolit ladění nativního kódu a potom zavřete stránku vlastností, aby se změny uložily. Enable mixed mode debugging

    V levém podokně vyberte Ladit , zaškrtněte políčko Povolit ladění nativního kódu a potom zavřete stránku vlastností, aby se změny uložily.

    Enable mixed mode debugging

  3. Pokud cílíte na knihovnu DLL x64 z aplikace .NET Framework, změňte cíl platformy z libovolného procesoru na x64. K tomu možná budete muset vybrat Configuration Manager z rozevíracího seznamu Platforma řešení na panelu nástrojů ladění. Pokud pak nemůžete přepnout přímo na x64, vytvořte novou konfiguraci, která cílí na x64.

Nastavení zarážky a spuštění ladění

  1. V projektu C# otevřete Program.cs. Na následujícím řádku kódu nastavte zarážku kliknutím na úplně levý okraj, výběrem řádku a stisknutím klávesy F9 nebo kliknutím pravým tlačítkem myši na řádek a výběrem zarážky Vložit zarážku>.

    int result = Multiply(7, 7);
    

    Na levém okraji se zobrazí červený kruh, kde nastavíte zarážku.

  2. Stiskněte klávesu F5, vyberte zelenou šipku na panelu nástrojů sady Visual Studio nebo vyberte> Spustit ladění a spusťte ladění.

    Ladicí program se pozastaví na zarážce, kterou jste nastavili. Žlutá šipka označuje, kde je ladicí program aktuálně pozastaven.

Krokování a odhlášení z nativního kódu

  1. Během pozastavení ladění ve spravované aplikaci stiskněte klávesu F11 nebo vyberte Krok pro ladění>.

    Otevře se soubor Mixed_Mode.h nativní hlavičky a zobrazí se žlutá šipka, kde je ladicí program pozastavený.

    Step into native code

    Step into native code

  2. Teď můžete nastavit a narazit na zarážky a zkontrolovat proměnné v nativním nebo spravovaném kódu.

    • Najeďte myší na proměnné ve zdrojovém kódu a zobrazte jejich hodnoty.

    • Podívejte se na proměnnou a jejich hodnoty v oknechAutomatické hodnoty a Místní hodnoty.

    • Když je ladicí program pozastavený, můžete také použít okna Kukátko a okno Zásobník volání.

  3. Dalším stisknutím klávesy F11 přejděte do ladicího programu o jeden řádek.

  4. Stiskněte Shift+F11 nebo vyberte Krok pro ladění> a pokračujte v provádění a znovu se pozastavte ve spravované aplikaci.

  5. Stisknutím klávesy F5 nebo výběrem zelené šipky pokračujte v ladění aplikace.

Blahopřejeme! Dokončili jste kurz ladění ve smíšeném režimu.

Další krok

V tomto kurzu jste zjistili, jak ladit nativní kód ze spravované aplikace povolením ladění ve smíšeném režimu. Přehled dalších funkcí ladicího programu najdete tady: