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:
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.
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.
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í.
Do souboru Mixed_Mode.cpp zkopírujte následující kód:
#include "Mixed_Mode.h"
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.
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í.
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
Vyberte Uložit soubor vše nebo soubory uložte stisknutím kombinace kláves Ctrl+Shift+S.>
Konfigurace a sestavení projektu knihovny DLL:
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 .
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.
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.
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.
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.
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
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í.
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(); } } }
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 .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
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.
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.
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.
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í
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.
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
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ý.
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í.
Dalším stisknutím klávesy F11 přejděte do ladicího programu o jeden řádek.
Stiskněte Shift+F11 nebo vyberte Krok pro ladění> a pokračujte v provádění a znovu se pozastavte ve spravované aplikaci.
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: