hibakereső dll
Általános elvek DLL hibakeresés
Bár a DLL végrehajtott különféle tárgyak, van 2 debugging elvileg felhasználható minden fajta DLL.
További hibakeresés DLL nem különbözik alapvetően az alkalmazások hibakeresése.
Néha olyan alkalmazás, amely a DLL, maga kell futtatni egy másik alkalmazás (ez a helyzet, amely bekövetkezik a ISAPI-kiterjesztés, ami betölti az IIS szolgáltatás). Ebben az esetben lehetőség van arra, hogy kövesse a következő taktikát.
- Akár az alkalmazást a technika az előző részben (ebben az esetben a hívás bekerül DebugBreak DLL-kód). Ha az alkalmazás fut tovább, abba (Debug-> szünet).
- Biztosítani kell, hogy a hibakereső betöltött szimbólumok DLL (a Debug ablak jelenik típusa szerint „Loaded szimbólumok <имя DLL>„.) Ha nem, akkor meg kell adnia, hogy a lista DLL hibakeresést DLL-eket.
- Fájlok megnyitása DLL forráskód (anélkül, hogy megnyitná a projekt!), És helyezze a megfelelő töréspont.
- Ahhoz, hogy folytassa a futtatást a kérelmet.
Hibakeresés Windows shell kiterjesztések
Windows shell kiterjesztések az alkalmazás hibakeresést jelzett explorer.exe.
Zárás a Windows shell
Mivel a rendszer nem működhet két héj egyszerre (kivétel ez alól a szabály később tárgyaljuk), ki kell töltenie a Windows shell, mielőtt az új ki a debugger. Hogy teljes legyen a héj, meg kell:
- Válassza ki a parancsot a Start-> Leállítás.
- Kattintson a Nem gombra a megnyitott párbeszédablakban lenyomva tartja a Ctrl + Alt + Shift.
Újraindításában a héj
Ahhoz, hogy indítsa újra a héj végén egy hibakereső ülésén ahhoz, hogy fut az explorer.exe bármely shell vagy a parancssorból. Ha sem a héj sem viszont a parancssor nincs jelen, az alábbi technikák alkalmazhatók.
- Nyomja meg a Ctrl + Alt + Del.
- Hívja a Task Manager.
- Válassza ki a parancsot File-> Új feladat (Futtatás), és elindítható egy héj.
- Kattintson duplán az asztalon. Nyílt Task párbeszédablak.
- Válassza a Fájl-> Futtatás, és futtassa a parancsértelmezőben.
kirakodás DLL
A szokásos működés során a héj eltávolítja DLL nem azonnal, de miután egy bizonyos ideig. Ez a kapcsoló megakadályozza felülírása egy DLL fájl. Ahhoz, hogy a héj azonnal rakodni DLL, akkor létre kell hozni a HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ AlwaysUnloadDLL és írjon „1” az alapértelmezett beállítás.
Hibakeresés bővítmények Visual C ++
Amikor hibakeresés bővítmények hibakereső Visual C ++ van a hibakeresés is. A legjobb, ha fut a példány környezetét nélkül Visual C ++ add-in'a, majd ezt a példányt a hibakeresés. Ellenkező esetben előfordulhat, hogy nagyon finom és nem nyilvánvaló hibák kijavításához amely elhagyja sok idő. Egy másik lehetőség, hogy a debug bővítmény - a távoli hibakeresés (ebből megbeszéljük a következő fejezetben).
Hibakeresés ISAPI-bővítmények
Az adatok ebben a részben látható IIS5
ISAPI-kiterjesztés - egy DLL, amely tele van IIS webkiszolgáló kérések kezeléséről. Ahogy lehet betölteni, mint a fő fájl IIS inetinfo.exe (Low Mode (IIS folyamat)), valamint egy külön folyamat Dllhost.exe (módok Medium (összevont) és Nagy (izolált)) attól függően, hogy a biztonsági beállításokat a webes alkalmazás (alkalmazás védelem) . Egy kicsit később látni fogjuk, hogyan debug ISAPI--bővülés ebben és a másik esetben. De először egy pár szót a készítmény a kiterjesztés a hibakeresés.
Felkészülés a hibakeresés
Mielőtt elkezdené a hibakeresés, akkor ajánlott a következő lépések végrehajtásával.
- Építs egy hibakereső változata a kiterjesztése.
- Hozzon létre egy virtuális könyvtár végrehajtási engedélyekkel (végre) számára. Ahhoz, hogy hozzon létre egy virtuális könyvtár az Internet Services Manager segédprogram (Start közötti lehet Start-> Felügyeleti eszközök menüben). Akkor adja meg bármilyen nevet (például teszt). Mivel a fizikai könyvtár elérési útját meg kell határoznia az utat a hibakeresés könyvtár kiterjesztés DLL (például C: \ Projects \ MyISAPI \ Debug).
- Gyorsítótárazásának tiltása Web Server Extensions. Alapértelmezésben a kiszolgáló kiterjesztés DLL betöltésekor, amint az első kérelem érkezik, és akkor marad a memóriában, így a későbbi kérések feldolgozása gyorsabb. Ez ésszerű megközelítés, de hibakeresés céljából jobb disable-elve a DLL terheletlen után azonnal a kérés feldolgozása. Ehhez indítsa el az Internet Services Manager Hívja a helyi menüből a webhely tulajdonságai párbeszédpanelen kattintson a lap könyvtárában. kattintson a Configuration gombra. és törölje cache ISAPI alkalmazások.
Ha a webkiszolgáló nem fut, indítsa el. Akkor, akkor közvetlenül a hibakeresés.
A folyamat során a hibakeresés ISAPI kiterjesztés, meg kell kezdeni, és állítsa le a webszerver elég gyakran. Akkor használd ezt a parancsot a net start w3svc, és a net stop w3svc, ill. felveheti ezeket a parancsokat az Eszközök menü, ha szükséges. így azok mindig kéznél van.
Hibakeresés bővülés gyártásközi módban
Ebben az üzemmódban a DLL betöltésekor inetinfo.exe folyamatot. Annak érdekében, hogy csatlakozzanak, lehetséges, hogy használja a leírt módszerek az előző részben (command csatolása feldolgozni. Debug paranccsal vagy egy Task Manager funkció DebugBreak. Ami ebben az esetben be kell helyezni GetExtensionVersion kiterjesztés). Akkor jár el megfelelően a vázolt „Általános alapelvek hibakeresés” betölteni a hibakeresési szimbólumok (ha szükséges), és helyezze a töréspont.
IIS fut rendes alkalmazási mód
Ha az összeg a hibakeresés nagy, és gyakran meg kell kezdeni, és állítsa le a szolgáltatást, egyszerűen fut IIS a debugger, mint egy közönséges alkalmazás.
Hibakeresés terjeszkedés mód, out-of-folyamat
Ebben az üzemmódban DLL betöltése folyamatban Dllhost.exe. A folyamat a hibakeresés, mert nem térnek el az előző esetben. Ne feledd, hogy a csatlakozási mód a folyamat, amelynek során DebugBreak nem fog működni, mint kivétel fogott belsejében EXCEPTION_BREAKPOINT Dllhost.exe.
A rendszer lehet több, mint egy folyamat nevét Dllhost.exe. Meg kell, hogy megtudja, melyik közülük betölti a DLL-bővítés. Ezt meg lehet tenni a különböző módokon. Az egyik lehetőség -, hogy helyezze magát a DLL kódját, hogy megmondja a folyamat azonosítóját, amelyben van betöltve. Például:
Megjegyzés: a MB_SERVICE_NOTIFICATION zászlót. Lényeges, hogy az üzenetet a ISAPI- expanziós látható a képernyőn.