hibakereső dll

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.

  1. 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).
  2. 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.
  3. Fájlok megnyitása DLL forráskód (anélkül, hogy megnyitná a projekt!), És helyezze a megfelelő töréspont.
  4. 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.

  1. Építs egy hibakereső változata a kiterjesztése.
  2. 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).
  3. 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.




Kapcsolódó cikkek