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:
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.
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.
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í .
Do Mixed_Mode.cppzkopírujte následující kód:
#include "Mixed_Mode.h"
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.
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í .
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
Vyberte Soubor>Uložit všechny nebo stiskněte Ctrl+Shift+S pro uložení souborů.
Konfigurace a sestavení projektu knihovny DLL:
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.
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.
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.
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.
V části Vlastnosti konfiguracevyberte Obecnéa v rozevíracím seznamu vedle Typ konfiguracevyberte Dynamická knihovna (.dll). Vyberte Použíta pak vyberte OK.
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
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í .
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(); } } }
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.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
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.
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.
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.
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í
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.
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
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ý.
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í.
Opětovným stisknutím klávesy F11 posuňte ladicí program o jeden řádek vpřed.
Stiskněte Shift+F11 nebo vyberte Ladit>Krok ven, abyste pokračovali v provádění a znovu pozastavili ve spravované aplikaci.
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: