Hibakereső szimbólumokkal, a blog ablakokra

Tehát, amíg az idő, nincs szükség további fájlokat, hogy megkönnyítse a folyamat hibakeresés, kód kutatók nem biztosított.

  • Ez képviseli a adatblokk épült, a bináris futtatható fájl belsejében található futtatható. Nem a legjobb módja annak, hogy tárolja ezeket a szimbólumokat, mert bizonyos esetekben jelentősen növeli a méretét a futtatható fájlt.
  • Ez kerül egy külön külső fájlban tárolt egy könyvtárat vagy egy bináris fájl vagy egy különleges független könyvtárba. Egy ilyen eljárás forgalomba legsokoldalúbb karakter.
  • teljesen hiányoznak. Ez nem keletkezik fordítási időben, és / vagy a szerelvény. és ez történik a legtöbb esetben :)

Egy adott változata a futtatható kódot, a fordító létrehoz egy egyedi szimbólum fájlt.







Ez alatt egy viszonylag egyszerű alapjait, hiszen a hibakeresési szimbólumok vannak mereven kötődnek egy adott forráskódot, és ha a forráskódot változtatni semmit (a húr, az eljárás változó), a régi vonal megszűnik a releváns és szükséges, hogy létrehoz egy új szimbólum fájl, ami ez pontosan megfelel egy új, módosított forráskódot. A fejlesztő szemszögéből érdemes figyelembe venni azt a tényt, hogy bármilyen változás a lehetséges a projekt teljes összeférhetetlenség karakterek közötti fájlok és alkatrészek, így a szimbólum fájlok és bináris fájlok kell építeni egy időben. Szemszögéből a kutató kell arra, hogy ezek a jelek fájlok megváltozik minden alkalommal, amikor egy új építésű (build), így a folyamat frissítése a rendszer is aktualizálni kell, hibakeresés szimbólum fájlok kapcsolódó rendszer modulok. Éppen ezért nagyon kényelmes használni automatizált folyamat jellegű kérés, hogy ne zavarják a kézi szinkronizálást.

Szükség van szimbólumok

WinDbg nyomkövetőt Microsoft lehet beállítani, hogy automatikusan kérjen hibakeresés információ, ha szükség van rá. Ez csak az alapvető kérdés, hogy szeretnék magam válaszolni magadnak, ha ugyanezek a hibakeresés szimbólumok szükségesek, vagy nem? Végeztem egy egyszerű kísérletet, amely abból állt, hogy az a tény, hogy én találtam heverni az én teszt állomáson csepp lerakó kék halál (BSOD), és csatlakoztassa először WinDbg a rendelkezésre álló karakterek, majd ugyanabban WinDbg nélkül karakterek, és itt az eredmény:

A folyamat során a hibakeresés 32 bites alkalmazások olyan helyzetek, amikor használata nélkül karakterek, akkor nem kap megbízható stack trace.

Hibakereső szimbólumokkal, a blog ablakokra

terjedését

Nyilvánvaló, hogy ha a szimbólumokat hivatalosan engedélyezték, meg kell valahogy terjeszteni, mi lenne a végfelhasználók szoftver a lehetőséget, akut a kívánt Természetesen ez a termék hibakereső, azaz hiba esetén is a képesség, hogy gyorsan megtalálja a valószínű oka az esemény. Hogyan, akkor hibakeresés szimbólumok nyújtanak a célközönség? Néhány évvel ezelőtt a fejlesztők, akik azt a feladatot kapta a hibakereső szimbólumokkal ügyfeleinek, telt ezt az információt a termékek optikai adathordozókon, CD / DVD meghajtó. Sem kivétel, valamint a Windows operációs rendszer, amely képes ellátni a hibakeresés szimbólumok hagyományosan elhelyezett elosztó tartozék lemez, vagy annak részeként Driver Development Kit (DDK). Azonban egy bizonyos ideig vált népszerű módszer terjedt szimbólumok az interneten keresztül. A hálózat erre a célra, a Microsoft elhelyezi a saját szimbóluma szerverrel, amely hibakereső szimbólumok azonban, hogy működjön együtt a szimbólum szerver, akkor kell használni egy egyéni protokollt.

Microsoft szimbólum szerver

Sok alkatrészek a Microsoft által kifejlesztett, mint a fájlok, amelyek segítségével az operációs rendszer, irodai alkalmazások és egyéb termékek, amelyek össze együtt a szimbólumok, amelyeket aztán eloszlik a Microsoft szimbólum szerver (Microsoft Symbol Server). szimbólum szerver online adatbázis nyilvános szimbólumok Microsoft termékek számára elérhető kérés HTTP protokoll egy vizuálisan nem vizuális útvonal (URL):







Ez elérhető az interneten adattár az összes állami jelképek termékek a Microsoft által kiadott az elmúlt néhány évben. A hatalmas plusz hibakeresés online karakterek minden Debuggers Microsoft (független a WinDbg. KD, és szerepelnek a terméket, mint a MS Visual Studio debugger), valamint számos harmadik féltől hibakereső eszközök már képesek automatikusan feltölteni szimbólumok közvetlenül a szerverről attól függően, hogy a változat a bináris kód hibakereséséhez. Képzeld el, mennyi időt lehet megtakarítani, összehasonlítva a helyzet, amikor kézzel kell horgot a karakterek a változat a modulban a hibakeresés az adott pillanatban.

Érdemes megjegyezni, hogy a Microsoft szimbólum szerver, hogy csak az állami szimbólumok, azaz a „lecsupaszított” információt a bináris struktúra. A kivétel néhány típusok in ntdll.dll fájlt és kernel modulok.

Nyilvános és privát szimbólumok

Ahogy már érthető, az információt a fájlok karakterek eltérhetnek a mértéke a teljesség. Alapértelmezésben a szimbólum által generált fájlok a C / C ++ kapcsoló tartalmaz egy csomó információt a futtatható fájl általában több, mint a legtöbb szoftverfejlesztők hajlandó biztosítani az ügyfeleinek. Ebben a tekintetben, létrehozása után a személyes adatokat el kell távolítani a PDB-fájlok szimbólumok megszerezni kimenetén egy úgynevezett nyilvános szimbólumok (állami szimbólumok) vagy nyírni szimbólumok (megfosztott szimbólumok). Ezek a „cut” állami szimbólumokat nem lehet használni a hibakeresés az üzemmódban a forráskód, mert a forráskód őket, egyszerűen nincs, és nincs információ a sorok száma a forrás fájlban. Visitor karakterek csak nem tartalmaznak információt, hogy segítsen a megjelenítési beállításokat A legtöbb funkciót, információkat a helyi változók típusú lokális változók. Ennek ellenére tartalmazott elegendő információt a kulcs hibakeresés script, ami gyakran elegendő. Így lehetőség van arra, hogy egy megnyugtató következtetést:

Nyilvános szimbólumok tartalmaz minimális információt, amely azonban elegendő legmegbízhatóbb hibakeresés forgatókönyveket.

Szimbólum fájlok által forgalmazott Microsoft, az csak az állami funkciókat, a globális változók és adattípusok, hogy van, nyilvánosak. Ezzel szemben néhány szoftverfejlesztők (Mozilla) elosztja a teljes hibakeresési információk (állami és magán szimbólumok szimbólumok). Magán (teljes, zárt) szimbólumok (saját szimbólumok) sokkal több információt tartalmaznak, beleértve az elérési út és a sorszámok a forráskódot, a neveket és a paraméter típusú függvények és változók.

PDB méret

Amióta a hibakeresési szimbólumok váltak tömegesen kereslet szakértői közösség, számos szoftverfejlesztő vannak elfoglalva létrehozása által a különböző tárolási módszerek a forrás fájlokat a szimbólum egység. Ebben az összefüggésben, a természetben mindenféle karakter megjelent felvételi formátumok. Mi, az e cikk kontextusában, szimbólum tárolási formátumokat Microsoft termékeket.
Általában a szimbólumokat lehet biztosítani a következő formátumokban:

  • .COFF fájlokat. adatokat tartalmazó Common Object File Format méret (COFF);
  • .CV fájlokat. adatokat tartalmazó CodeView formátumban. Format Storage karaktereket a Microsoft. elavult;
  • Allilcsoport; fájlok (szimbólumok). Elavult formátum;
  • .DBG fájlok (Debug) adatokat tartalmazó formátumban COFF (Common Object File Format). Elég egy közös formátum, amely kompatibilis a nagy számú idős hibakeresőkkel. Előfordulhat azonban, hogy nem tartalmaz információt a sornyi forráskódot;
  • .pdb fájlok (Program Database), adatokat tartalmazó MSF formátumban (Multi-stream fájlok). Modern Advanced Format a Microsoft által kifejlesztett. Ez sokkal több információt tartalmaznak, mint .dbg.

Azonban figyelembe vesszük ezt a cikket csak az EKT formátumban, amely a legfejlettebb, illetve és az előnyben részesített formátum a különböző fejlesztési eszközök a Microsoft.
Minden adat, hogy az EKT fájl tartalmazhat:

  • Visitor karakterek: minden funkció, a statikus és globális változók;
  • A lista objektum fájlok, amelyek felelősek a kódszakaszt futtatható fájl;
  • Információk az optimalizálás a verem mutató (FPO);
  • Nevek a lokális változók;
  • Típusa lokális változók. Ezzel a debugger vagy bontó nem csak a memóriából kiolvasott változó, hanem megjeleníti ezeket az értékeket a képernyőn egy bizonyos formában (attól függően, hogy a változó típus);
  • Nevei adatszerkezetek;
  • Típusú adatszerkezetek;
  • Egyéni szimbólumok: a forráskód a program;
  • Egyéni szimbólumok: sorszám információk a forrás szövegben;

PDB a fájlt:

A példa lehet megmondani WinDbg debugger, hogy „lehet” automatikusan letölti a fájlokat a hibakereső szimbólumokkal az EKT formátumban a szerver kiválasztása révén különböző szempontok (időbélyeg ellenőrző (CRC), egy / multi-core) alkalmazásával SymSrv (SymSrv.dll). Szabványos szimbólum lookup protokoll működik a Microsoft szimbólum szerver.

Nem tudom, ha én is dolgozzon ki egy témát, de bizonyos következtetéseket a folyamat tanulmányozása a téma, én mégis magam. A fő következtetés vonható elolvasása után az anyag - hibakereső szimbólumok nagyban egyszerűsíti szoftver hibakeresés folyamat, és csökkenti az időt a megértés az algoritmus a munka és keresi a probléma forrását.

Kapcsolódó bejegyzések: