Sdílet prostřednictvím


Ladění knihoven DLL v sadě Visual Studio (C#, C++, Visual Basic, F#)

Knihovna DLL (dynamická knihovna) je knihovna, která obsahuje kód a data, která může používat více než jedna aplikace. Pomocí sady Visual Studio můžete vytvářet, sestavovat, konfigurovat a ladit knihovny DLL.

Vytvoření knihovny DLL

Následující šablony projektů sady Visual Studio mohou vytvářet knihovny DLL:

  • C#, Visual Basic nebo knihovna tříd jazyka F#
  • Knihovna ovládacích prvků model Windows Forms jazyka C# nebo Visual Basic (WCF)
  • Knihovna DLL (Dynamic-Link Library) jazyka C++

Další informace naleznete v tématu Techniky ladění MFC.

Ladění knihovny WCF je podobné ladění knihovny tříd. Podrobnosti najdete v tématu model Windows Forms Ovládací prvky.

Obvykle voláte knihovnu DLL z jiného projektu. Při ladění volajícího projektu v závislosti na konfiguraci knihovny DLL můžete krokovat a ladit kód knihovny DLL.

Konfigurace ladění knihovny DLL

Když k vytvoření aplikace použijete šablonu projektu sady Visual Studio, Sada Visual Studio automaticky vytvoří požadovaná nastavení pro konfigurace sestavení ladění a vydání. V případě potřeby můžete tato nastavení změnit. Další informace najdete v následujících článcích:

Nastavení atributu C++ DebuggableAttribute

Aby se ladicí program připojil k knihovně DLL jazyka C++, musí kód jazyka C++ vygenerovat DebuggableAttribute.

DebuggableAttributeNastavení:

  1. Vyberte projekt knihovny DLL jazyka C++ v Průzkumník řešení a vyberte ikonu Vlastnosti nebo klikněte pravým tlačítkem myši na projekt a vyberte Vlastnosti.

  2. V podokně Vlastnosti v části Ladění linkeru>vyberte možnost Ano (/ASSEMBLYDEBUG) pro ladění sestavení.

Další informace naleznete v tématu /ASSEMBLYDEBUG.

Nastavení umístění souborů DLL jazyka C/C++

Chcete-li ladit externí knihovnu DLL, volající projekt musí být schopen najít knihovnu DLL, jeho soubor .pdb a všechny ostatní soubory, které knihovna DLL vyžaduje. Můžete vytvořit vlastní úlohu sestavení, která tyto soubory zkopíruje do složky <>projektu\Ladit výstupní složku, nebo můžete soubory zkopírovat ručně.

U projektů C/C++ můžete nastavit umístění hlaviček a souborů LIB na stránkách vlastností projektu místo jejich kopírování do výstupní složky.

Nastavení umístění hlaviček C/C++ a souborů KNIHOVNY:

  1. Vyberte projekt knihovny DLL C/C++ v Průzkumník řešení a vyberte ikonu Vlastnosti nebo klikněte pravým tlačítkem myši na projekt a vyberte Vlastnosti.

  2. V horní části podokna Vlastnosti v části Konfigurace vyberte Všechny konfigurace.

  3. V části C/C++>Obecné další>adresáře include zadejte složku, která obsahuje soubory hlaviček.

  4. V části Adresáře Obecné>další knihovny linkeru>zadejte složku, která obsahuje soubory LIB.

  5. V části Linker Input Additional Dependencies (Další závislosti vstupu>linkeru>) zadejte úplnou cestu a název souboru pro soubory LIB.

  6. Vyberte OK.

Další informace o nastavení projektu jazyka C++ naleznete v referenčních informacích na stránce vlastností systému Windows C++.

Sestavení verze ladění

Před zahájením ladění nezapomeňte sestavit ladicí verzi knihovny DLL. Chcete-li ladit knihovnu DLL, volající aplikace musí být schopna najít soubor .pdb a všechny ostatní soubory, které knihovna DLL vyžaduje.

Můžete vytvořit vlastní úlohu sestavení, která zkopíruje soubory DLL do <složky volajícího projektu\Ladit výstupní složku>, nebo můžete soubory zkopírovat ručně.

Nezapomeňte zavolat knihovnu DLL ve správném umístění. Může to vypadat jako běžné, ale pokud volající aplikace najde a načte jinou kopii knihovny DLL, ladicí program nikdy nenarazí na zarážky, které jste nastavili.

Ladění knihovny DLL

Knihovnu DLL nelze spustit přímo. Musí být volána aplikací, obvykle .exe soubor. Další informace naleznete v tématu Projekty sady Visual Studio – C++.

Chcete-li ladit knihovnu DLL, můžete spustit ladění z volající aplikace nebo ladit z projektu knihovny DLL zadáním jeho volající aplikace. Pomocí příkazového okna ladicího programu můžete také vyhodnotit funkce knihovny DLL nebo metody v době návrhu bez použití volající aplikace.

Další informace naleznete v tématu První pohled na ladicí program.

Spuštění ladění z volající aplikace

Aplikace, která volá knihovnu DLL, může být:

  • Aplikace z projektu sady Visual Studio ve stejném nebo jiném řešení než knihovna DLL.
  • Existující aplikace, která je už nasazená a spuštěná na testovacím nebo produkčním počítači.
  • Nachází se na webu a přistupuje se přes adresu URL.
  • Webová aplikace s webovou stránkou, která vkládá knihovnu DLL.

Pokud chcete ladit knihovnu DLL z volající aplikace, můžete:

  • Otevřete projekt pro volající aplikaci a spusťte ladění výběrem >možnosti Spustit ladění nebo stisknutím klávesy F5.

    nebo

  • Připojte se k aplikaci, která je už nasazená a spuštěná na testovacím nebo produkčním počítači. Tuto metodu použijte pro knihovny DLL na webech nebo ve webových aplikacích. Další informace naleznete v tématu Postupy: Připojení ke spuštěném procesu.

Než začnete ladit volající aplikaci, nastavte zarážku v knihovně DLL. Viz Použití zarážek. Při dosažení zarážky knihovny DLL můžete procházet kód a sledovat akci na každém řádku. Další informace naleznete v tématu Navigace kódu v ladicím programu.

Během ladění můžete pomocí okna Moduly ověřit knihovny DLL a soubory .exe , které aplikace načte. Pokud chcete otevřít okno Moduly, při ladění vyberte Ladit>moduly Systému Windows.> Další informace naleznete v tématu Postupy: Použití okna Moduly.

Použití okna Okamžité

Pomocí příkazového okna můžete vyhodnotit funkce knihovny DLL nebo metody v době návrhu. Okamžité okno hraje roli volající aplikace.

Poznámka:

V době návrhu můžete použít okno Okamžité s většinou typů projektů. Nepodporuje se pro SQL, webové projekty ani skripty.

Pokud chcete například otestovat metodu pojmenovanou Test ve třídě Class1:

  1. Otevřete projekt knihovny DLL tak, že vyberete Možnost Ladit>Windows>Immediate nebo stisknete kombinaci kláves Ctrl+Alt+I.

  2. Vytvořte instanci objektu typu Class1 zadáním následujícího kódu jazyka C# do příkazového okna a stisknutím klávesy Enter. Tento spravovaný kód funguje pro C# a Visual Basic s odpovídajícími změnami syntaxe:

    Class1 obj = new Class1();
    

    V jazyce C# musí být všechny názvy plně kvalifikované. Všechny metody nebo proměnné musí být v aktuálním oboru a kontextu, když se služba jazyka pokusí vyhodnotit výraz.

  3. Za předpokladu, že Test přebírá jeden int parametr, vyhodnoťte Test pomocí příkazového okna:

    ?obj.Test(10);
    

    Výsledek se vytiskne v okně Okamžité .

  4. Můžete pokračovat v ladění Test umístěním zarážky do ní a opětovným vyhodnocením funkce.

    Zarážka se objeví a můžete Testprocházet . Po spuštění Testse ladicí program vrátí v režimu návrhu.

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

Volající aplikaci pro knihovnu DLL můžete napsat ve spravovaném nebo nativním kódu. Pokud nativní aplikace volá spravovanou knihovnu DLL a chcete ladit obojí, můžete ve vlastnostech projektu povolit spravované i nativní ladicí programy. Přesný proces závisí na tom, jestli chcete spustit ladění z projektu knihovny DLL nebo volajícího projektu aplikace. Další informace naleznete v tématu Postupy: Ladění ve smíšeném režimu.

Nativní knihovnu DLL můžete také ladit ze spravovaného volajícího projektu. Další informace naleznete v tématu Ladění spravovaného a nativního kódu.