Sdílet prostřednictvím


Návod: Ladění C# a C++ ve stejné ladicí relaci

Visual Studio umožňuje povolit více než jeden typ ladění v ladícím režimu, který se nazývá ladění ve smíšeném režimu. V tomto kurzu se naučíte ladit jak spravovaný, tak nativní kód během jedné relace ladění.

Tento kurz ukazuje, jak ladit nativní kód ze spravované aplikace, ale můžete také ladit spravovaný kód z nativní aplikace. Ladicí program také podporuje jiné typy ladění ve smíšeném režimu, jako je ladění Pythonu a nativního kódua použití skriptového ladicího programu v aplikacích, 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
  • Konfigurujte ladění ve smíšeném režimu
  • Spuštění ladicího programu
  • Dosažení zarážky ve spravované aplikaci
  • Vstup 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 Corev závislosti na typu aplikace, kterou chcete vytvořit.

Pokud sadu Visual Studio nemáte, přejděte na stránku Visual Studio ke stažení a nainstalujte ho zdarma.

Pokud máte nainstalovanou sadu Visual Studio, ale nemáte potřebné úlohy, vyberte Otevřít instalační program sady Visual Studio v levém podokně dialogového okna Visual Studio Nový projekt. V instalačním programu sady Visual Studio vyberte požadované pracovní zátěže 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. Zadejte Ctrl + Q otevřete vyhledávací pole, zadejte Prázdný projekt, zvolte Šablonya 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 nevidíte šablonu projektu Prázdný projekt, přejděte na Nástroje>Získat nástroje a funkce..., čímž se otevře instalační program sady Visual Studio. Spustí se instalační program sady Visual Studio. Zvolte pracovní zátěž Vývoj desktopových aplikací pomocí C++ a pak zvolte Upravit.

    Visual Studio vytvoří projekt.

  2. V Průzkumníku řešenívyberte Zdrojové souborya pak vyberte Projekt>Přidat novou položku. Nebo klikněte pravým tlačítkem myši na zdrojové soubory a vyberte Přidat>Nový prvek.

    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.cpp a pak vyberte Přidat.

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

  4. Do Mixed_Mode.cppzkopírujte následující kód:

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

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

  6. V dialogovém okně Nová položka vyberte záhlaví souboru(.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íka řešení .

  7. Zkopírujte následující kód do Mixed_Mode.h:

    #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 Soubor>Uložit všechny nebo stiskněte Ctrl+Shift+S pro uložení souborů.

Konfigurace a sestavení projektu knihovny DLL:

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

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

  3. V horní části podokna vlastnosti zkontrolujte, jestli je konfigurace nastavená na Active(Debug) a platformu je stejná jako nastavení 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 vlastnosti nové platformy překonfigurovat.

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

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

    Přepněte na nativní knihovnu DLL

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

    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. Zadejte Ctrl + Q, abyste otevřeli vyhledávací pole, zadejte konzole, zvolte Šablonya pak zvolte Konzolovou aplikaci 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 klikněte na Další nebo Vytvořit, podle toho, která možnost je dostupná.

    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 Tools>Get Tools and Features..., čímž se otevře instalační program sady 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íku řešení .

  2. Nahraďte veškerý kód v 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 k souboru v [DllImport] cestou k souboru k Mixed_Mode_Debugging.dll, kterou jste právě vytvořili. Nápovědu najdete v komentáři ke kódu. Ujistěte se, že nahradíte zástupný symbol pro uživatelské jméno.

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

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

  1. V Průzkumníku řešenívyberte projektový uzel Mixed_Mode_Calling_App a vyberte ikonu Vlastnosti, nebo klepněte pravým tlačítkem na projektový uzel a vyberte Vlastnosti.

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

    kódu .NET

    V levém podokně vyberte Ladit, poté vyberte Otevřít uživatelské rozhraní spouštěcích profilů ladění, zaškrtněte políčko Povolit ladění nativního kódu a zavřete stránku vlastností pro uložení změn.

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

    kódu rozhraní .NET Framework

    V nabídce vlevo vyberte Ladit. Potom v části Engine ladicího programu vyberte možnost Povolit ladění nativního kódu a potom zavřete stránku vlastností, aby se změny uložily.

    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í pro uložení změn.

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

  3. Pokud cílíte na knihovnu DLL x64 z aplikace .NET Framework, změňte cíl platformy z Libovolný procesor 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 platformu x64, vytvořte Nová konfigurace, 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 tak, že kliknete na levý okraj, vyberete čáru a stisknete F9nebo kliknete pravým tlačítkem myši na řádek a vyberete Zarážku>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 F5, vyberte zelenou šipku na panelu nástrojů sady Visual Studio nebo vyberte Ladění>Spustit ladění a spusťte ladění.

    Ladicí program se pozastaví na bodu přerušení, který jste nastavili. Aktuální pozici, kde je ladicí program pozastaven, označuje žlutá šipka.

Vstup a výstup z nativního kódu

  1. Při pozastavení ladění ve spravované aplikaci stiskněte F11nebo vyberte Ladit>Krok do.

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

    Krok do nativního kódu

    Krok do nativního kódu

  2. Nyní můžete nastavit zarážky a zastavit na nich 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.

    • Prohlédněte si proměnné a jejich hodnoty v oknech Automatických a Místních.

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

  3. Opětovným stisknutím klávesy F11 posuňte ladicí program o jeden řádek vpřed.

  4. Stiskněte Shift+F11 nebo vyberte Ladit>Krok ven, abyste pokračovali v provádění a znovu pozastavili ve spravované aplikaci.

  5. Stiskněte F5 nebo vyberte zelenou šipku a 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: