DLL-ek hibakeresése a Visual Studióban (C#, C++, Visual Basic, F#)

A DLL (dinamikus csatolású kódtár) olyan kódtár, amely több alkalmazás által használható kódot és adatokat tartalmaz. A Visual Studio használatával dll-eket hozhat létre, hozhat létre, konfigurálhat és hibakeresést végezhet.

DLL létrehozása

A következő Visual Studio-projektsablonok hozhatnak létre DLL-eket:

  • Osztálykódtár (.NET, .NET-keretrendszer és egyéb alkalmazásplatformok)
  • Windows Forms Vezérlőtár (.NET és .NET-keretrendszer)
  • Dynamic-Link kódtár (DLL) (C++)

A Windows Forms vezérlőtár hibakeresése hasonló az osztálytárak hibakereséséhez. További információ: Windows Forms Controls.

Általában egy másik projektből hív meg egy DLL-t. Ha hibakeresést hajt végre a hívó projektben, a DLL-konfigurációtól függően beléphet a DLL-kódba, és hibakeresést végezhet.

DLL hibakeresési konfiguráció

Amikor Visual Studio-projektsablont használ egy alkalmazás létrehozásához, a Visual Studio automatikusan létrehozza a hibakeresési és kiadási buildkonfigurációkhoz szükséges beállításokat. Szükség esetén módosíthatja ezeket a beállításokat. További információkért lásd a következő cikkeket:

A C++ DebuggableAttribute beállítása

Ahhoz, hogy a hibakereső egy C++ DLL-hez legyen csatolva, a C++ kódnak ki kell bocsátania DebuggableAttribute.

Beállítás DebuggableAttribute:

  1. Válassza ki a C++ DLL-projektet a Megoldáskezelőben , és válassza a Tulajdonságok ikont, vagy kattintson a jobb gombbal a projektre, és válassza a Tulajdonságok lehetőséget.

  2. A Tulajdonságok panel Linker>hibakeresés csoportjában válassza az Igen (/ASSEMBLYDEBUG) lehetőséget a hibakeresési szerelvényhez.

További információ: /ASSEMBLYDEBUG.

C/C++ DLL-fájlhelyek beállítása

Külső DLL hibakereséséhez a hívó projektnek képesnek kell lennie megtalálni a DLL-t, annak .pdb fájlját és a DLL által igényelt egyéb fájlokat. Létrehozhat egy egyéni összeállítási feladatot, amellyel ezeket a fájlokat a <projektmappába\Hibakeresési kimeneti mappába> másolhatja, vagy manuálisan is átmásolhatja a fájlokat.

C/C++ projektek esetén a projekttulajdonságok lapjain beállíthatja a fejléc- és LIB-fájlhelyeket ahelyett, hogy a kimeneti mappába másolta őket.

C/C++ fejléc- és LIB-fájlhelyek beállítása:

  1. Válassza ki a C/C++ DLL-projektet a Megoldáskezelőben , és válassza a Tulajdonságok ikont, vagy kattintson a jobb gombbal a projektre, és válassza a Tulajdonságok lehetőséget.

  2. A Tulajdonságok panel tetején, a Konfiguráció csoportban válassza az Összes konfiguráció lehetőséget.

  3. A C/C++>Általános>további belefoglalási könyvtárak csoportban adja meg a fejlécfájlokat tartalmazó mappát.

  4. A Linker>Általános>további könyvtárak könyvtárai csoportban adja meg a LIB-fájlokat tartalmazó mappát.

  5. A Linker>bemeneti>további függőségei csoportban adja meg a LIB-fájlok teljes elérési útját és fájlnevét.

  6. Kattintson az OK gombra.

A C++ projektbeállításokról további információt a Windows C++ tulajdonságlapján talál.

Hibakeresési verzió létrehozása

A hibakeresés megkezdése előtt mindenképpen készítsen hibakeresési verziót a DLL-ről. A DLL hibakereséséhez a hívó alkalmazásnak képesnek kell lennie megtalálni a .pdb fájlját és a DLL által igényelt egyéb fájlokat. További információért lásd: Hogyan állítsuk be a hibakeresési és kiadási konfigurációkat.

Létrehozhat egy egyéni buildelési feladatot, amellyel a DLL-fájlokat átmásolhatja a <hívó projektmappába>\Hibakeresés kimeneti mappába, vagy manuálisan is másolhatja a fájlokat.

Ügyeljen arra, hogy a DLL-t a megfelelő helyen hívja meg. Ez nyilvánvalónak tűnhet, de ha egy hívó alkalmazás megkeresi és betölti a DLL egy másik példányát, a hibakereső soha nem éri el a beállított töréspontokat.

DLL hibakeresése

Közvetlenül nem futtathat DLL-t. Egy alkalmazásnak kell meghívnia, általában .exe fájl.

DLL hibakereséséhez elkezdheti a hibakeresést a hívó alkalmazásból, vagy hibakeresést a DLL-projektből a hívó alkalmazás megadásával. A hibakereső Azonnali ablakával is kiértékelheti a DLL-függvényeket vagy metódusokat a tervezéskor, hívó alkalmazás használata nélkül.

Hibakeresés indítása a hívó alkalmazásból

A DLL-t hívó alkalmazás a következő lehet:

  • Egy Visual Studio-projektből származó alkalmazás ugyanabban vagy egy másik megoldásban, mint a DLL.
  • Egy meglévő alkalmazás, amely már üzembe lett helyezve, és egy teszt- vagy éles számítógépen fut.
  • A weben található és URL-címen keresztül érhető el.
  • A DLL-t beágyazó weblapot tartalmazó webalkalmazás.

Mielőtt elkezdené a hívó alkalmazás hibakeresését, állítson be egy töréspontot a DLL-ben. Tekintse meg a töréspontok használatának első lépéseit. A DLL-töréspont elérésekor végiglépkedhet a kódon, és megfigyelheti a műveletet az egyes sorokban. További információ: Navigálás a hibakeresőben.

Ha dll-t szeretne hibakeresésre egy hívó alkalmazásból, a következőt teheti:

  • Nyissa meg a hívó alkalmazás projektét, és kezdje el a hibakeresést a Hibakeresés>indítása vagy az F5 billentyű lenyomásával.

    vagy

  • Csatolja egy olyan alkalmazáshoz, amely már üzembe van helyezve, és egy teszt- vagy éles számítógépen fut. Ezt a módszert webhelyeken vagy webalkalmazásokban található DLL-ekhez használhatja. További információ : Útmutató: Csatolás futó folyamathoz.

A hibakeresés során a Modulok ablakban ellenőrizheti az alkalmazás által betöltött DLL-eket és .exe fájlokat. A Modulok ablak megnyitásához hibakeresés közben válassza aWindows-modulok>> lehetőséget. További információ : Útmutató: A Modulok ablak használata.

Az Azonnali ablak használata

Az Azonnali ablakban kiértékelheti a DLL-függvényeket vagy metódusokat a tervezéskor. Az Azonnali ablak egy hívó alkalmazás szerepét tölti be.

Megjegyzés:

A legtöbb projekttípushoz használhatja az Azonnali ablakot tervezéskor. SQL, webes projektek vagy szkriptek esetében nem támogatott.

Például egy Test osztályban lévő Class1 metódus teszteléséhez:

  1. Ha meg van nyitva a DLL-projekt, nyissa meg az Azonnali ablakot a Hibakeresés>Windows>Azonnali menüpont kiválasztásával vagy a Ctrl+Alt+I billentyűkombináció lenyomásával.

  2. Egy típusobjektum Class1 példányosításához írja be a következő C#-kódot az Azonnali ablakba, és nyomja le az Enter billentyűt. Ez a felügyelt kód a C# és a Visual Basic esetében működik a megfelelő szintaxismódosításokkal:

    Class1 obj = new Class1();
    

    A C#-ban minden névnek teljes mértékben minősítettnek kell lennie. A metódusoknak és változóknak az aktuális hatókörben és kontextusban kell lenniük, amikor a nyelvi szolgáltatás megpróbálja kiértékelni a kifejezést.

  3. Feltételezve, hogy egy Test paramétert int vesz igénybe, értékelje ki Test az Azonnali ablak használatával:

    ?obj.Test(10);
    

    Az eredmény az Azonnali ablakban jelenik meg.

  4. A hibakeresés Test folytatásához helyezzen el benne egy töréspontot, majd értékelje újra a függvényt.

    A töréspontot a rendszer eléri, és végiglépkedhet rajta Test. Miután a végrehajtás befejeződött Test, a hibakereső újra tervező módban lesz.

Vegyes módú hibakeresés

A dll-hez tartozó hívóalkalmazást felügyelt vagy natív kódban is megírhatja. Ha a natív alkalmazás meghív egy felügyelt DLL-t, és mindkettőt szeretné hibakeresésre használni, engedélyezheti a felügyelt és a natív hibakeresőket is a projekttulajdonságokban. A pontos folyamat attól függ, hogy a DLL-projektből vagy a hívóalkalmazás-projektből szeretné-e elindítani a hibakeresést. A további információkért lásd: Hogyan: Hibakeresés vegyes módban.

A natív DLL hibakeresésre is használható egy felügyelt hívóprojektből. További információ: Felügyelt és natív kód hibakeresése.