hibakeresés alkalmazások

Ebben a részben haladunk az elmélettől a gyakorlatig, és nézd meg néhány szempontból az alkalmazások hibakeresése.

Hibakeresés és végleges változatai

  • Minden inicializált lokális változókat értékeljük 0xCC tölteni. Kezelése nem inicializált mutató, amelynek értéke garantáltan vezet a hibaüzenetet. A program felfüggesztésre kerül, és láthatjuk a debugger, a pontos helyét a problémát sor.
  • Az értékek a stack pointer bejáratánál és kijáratánál ellenőrzik a funkciókat, az egyenlőség. Hibás azt jelenti, hogy a verem sérült (például a rögzítési körülmények miatt a helyi tömb határ), és a program hibaüzenetet jelenít meg.
  • Az értékek a stack pointer előtt és után a hívás is ellenőrzi az egyenlőség. Ha kimutatható eltérés, a program hibaüzenetet ad. Ez lehetővé teszi, hogy hibákat társított függvényhívás a jel, amely be van állítva a nem megfelelően beállított, vagy hívja egyezmény. Itt egy példa a hiba:

Egyesek úgy vélik, hogy a letiltás után hibakeresés szimbólumok optimalizálása és a termelés a végleges változat nem különbözik a hibakeresés. Ez nem így van. Először is, a hibakereső változata a linket a hibakeresés változata a C könyvtár és a végleges változat - a szokásos. Másodszor, a végleges változat nem határozza meg a makro _DEBUG. ami a eltávolítása a program az összes diagnosztikai ellenőrzéseket. Vannak más, finomabb különbségeket. Például, a végleges változat nincs inicializálási változók és a memória területek különleges hibakeresés értékek, mint 0xCD, 0xCC. Ezek a támogatások a fordító, hogy sok ellenőrzések mutatók, változó, így egy stabil eredményt a debug verzió, ami instabilitást a végleges változat.







Ha a hiba csak akkor jelenik meg, amikor optimalizálás engedélyezve van, akkor lehet korrigálni az alábbi módszerekkel.

  • Hagyj fel az optimalizálás, vagy lehetővé teszi szelektíven az egyes modulokat. Ön is használja #pragma optimalizálja irányelv finomhangolását optimalizálása a modulon belül.
  • Átírni a kódot eltérő módon - talán egy megváltozott verzió, akkor kell összeállítani és optimalizált hiba nélkül.

Hibakeresés futó alkalmazások más alkalmazások

Ha a kívánt alkalmazást a hibakeresés, fut egy másik alkalmazás (ez különösen vonatkozik a helyi COM-kiszolgáló szolgáltatások és Windows NT), a probléma némileg bonyolultabb. Meg kell csatolni a debugger egy cél folyamat előtt végre a hibás kódot. Használhatja a következő megközelítések.

Manuálisan csatlakozhat a hibakereső eljárás

Már tudom, hogy csatolja a debugger egy már futó folyamat kétféleképpen: A Feladatkezelő azon keresztül vagy a parancs BuildService> Indítás Debug-> Csatolás folyamatban.







A hátránya ennek a megközelítésnek abban a tényben rejlik, hogy a kezdetektől a folyamat, mielőtt csatlakozott a hibakereső bizonyos időt vesz igénybe, amely alatt a program végrehajtásához szükséges időt. Ez lehet csak az a része, amely a leginkább érdekli. Ebben az esetben, akkor használja a következő módszert.

használata DebugBreak

DebugBreak funkciót lehet használni, hogy szakítsa meg a programot a kezdetektől a munkáját, mint például:

Hívjon DebugBreak funkció egyenértékű kiváltó töréspontot. Ha a program fut, anélkül, hogy a hibakereső töréspont nem különbözik bármely más kivétel. Ezért a rendszer leállítja a programot, és így a megszokott Application Error ablakban (ábra. 10).


10. ábra Töréspont Kivétel típusa

Automatikus kapcsolódás a hibakereső eljárás

Paraméterrel Debugger kapcsolatos egyik kellemetlen kényszer: a debugger útvonal hossza nem haladhatja meg a 64 karaktert. Az útvonal a könyvtárat, amelyben a Visual C ++ telepítése alapértelmezés szerint, általában hosszabb. Ebben az esetben meg kell találni a módját, hogy írjon az utat, hogy tömörebb - például, hogy a könyvtár a Visual C ++ közös (megosztott), és állítsa a paraméter Debugger a hálózat nevét.

Az alkalmazás mindig fut az debugger. Letiltani ezt a viselkedést, távolítsa el a regisztrációs kulcsot, amely együtt jár az alkalmazás

Mi a következő lépés?

Ha már egyszer a hibakereső alkalmazás lehet az eljárás a.

Fájlok hibakereső szimbólumokat kell ugyanabban a könyvtárban, mint a program, vagy a könyvtárban, ahol kezdetben fel a fordító.

  • Nyissa meg a forrás fájlok a program (File-> Open), és helyezze a megfelelő helyeken töréspontok.
  • A kérelem megújítását.

Ezt követően a hibakeresés munkamenet folytatódik a szokásos módon.

hibakeresés szolgáltatások

DVse Windows NT szolgáltatás fut a Service Control Manager (Service Control Manager, SCM). Erősítse a hibakereső képes feldolgozni a szolgáltatást pillanatában kezdete és később. Használhatja a vázolt módszerek az előző részben. Szolgáltatások azonban néhány olyan elem, amelyet érdemes megemlíteni.

Egy egyszerűsített változata hibakeresés

Mivel az egyes szolgáltatások egy szabályos Windows alkalmazás, a legtöbb esetben ez lehet futtatni, mint bármely más futtatható fájlt, és a hibakeresés a normál üzemmódba. A szolgáltatások létrehozott ATL Wizard generált kód, amely lehetővé teszi, hogy regisztrálja ezt a szolgáltatást, nem csak a szolgáltatást, hanem mint egy közönséges helyi COM-kiszolgáló. Ebben a standard eljárások állnak EXE-hibakeresés alkalmazások. Ez a rendszer nem mindig alkalmas, mint egy alkalmazás szolgáltatásként fut, megvannak a maga sajátosságai.

Hibakeresés kódfuttatást

Hagyjuk Mode szolgáltatás együttműködhet az asztallal

A folyamat során a hibakeresés a szolgáltatás (vagy bármilyen más alkalmazás) használata kényelmes, hibakeresési makrók (például _ASSERT) vizsgálja meg a különböző körülmények között a program során. Ez üzeneteket ezek a makrók jelenhet meg a képernyőn, nyissa meg a tulajdonságok a szolgáltatás, menj a lap Log On, győződjön meg arról, hogy a szolgáltatás fut a SYSTEM fiók, és ellenőrizze a doboz engedélyezése szolgáltatás együttműködhet az asztallal. A szolgáltatás teljesen kijavítottuk, ez az opció le van tiltva.

Hibakeresés helyi COM-kiszolgáló

Amikor a hibakeresés a helyi COM-kiszolgáló kényelmes a használata OLE RPC hibakeresés módban. Ebben a módban, akkor „megy” a hibakereső közvetlenül a COM-kiszolgáló módszerekkel (ez a „on the fly” fut egy második példányát a hibakereső és csatlakozni a szerverhez). OLE RPC hibakereső mód engedélyezve van az ablakban Eszközök-> Beállítások (Debug fül). Ahhoz, hogy ez lehetséges, először engedélyeznie kell Just-in-time hibakeresés módban.




Kapcsolódó cikkek