Na čo slúži PDB súbor?
PDB súbory: Čo musí vedieť každý vývojár
Príklad scenára PDB:
Čo je to PDB súbor?
Väčšina vývojárov by mala vedieť, že PDB súbory sa používajú na podporu ladenia softvéru. Ale ako presne funguje, možno nevieme. Tento článok popisuje úložisko a obsah súborov PDB. Tiež popisuje, ako debugger nájde PDB súbor zodpovedajúci binay a ako debugger nájde zdrojový kódový súbor zodpovedajúci binay. Tento článok je určený pre všetkých natívnych a spravovaných vývojárov.
Predtým, než začneme, definujme dva pojmy: súkromná zostava, ktorá označuje zostavu generovanú na vlastnom počítači vývojára; Public build, čo znamená build generovaný na verejnom build stroji. Súkromná stavba je relatívne jednoduchá, pretože PDB a Binay sú na rovnakom mieste a zvyčajne máme problémy s verejnou výstavbou.
Najdôležitejšie, čo by mali všetci vývojári vedieť, je, že "PDB súbory sú rovnako dôležité ako zdrojový kód", bez ktorého sa ani nedá ladiť. Pri verejnej zostave musí symbol server uložiť všetky PDB a keď používateľ nahlási chybu, debugger automaticky nájde príslušný PDB súbor v binay a Visual Studio aj Windbg vedia, ako sa k symbolovému serveru dostať. Pred uložením PDB a binay na symbol server je potrebné tiež zaindexovať zdrojový index behu PDB, teda priradiť PDB a zdroj.
Ďalšia časť predpokladá, že Symbol Server a Source Server Indexing sú už nastavené. TFS2010 je možné urobiť rovnako jednoducho ako indexovanie zdrojového kódu a kopírovanie symbolového servera pre novú zostavu.
2. Obsah súboru PDB
Oficiálne začínajúc obsah PDB, PDB nie je verejne dostupný formát súboru, ale Microsoft poskytuje API, ktoré pomáha získavať dáta z PDB.
Natívny C++ PDB obsahuje nasledujúce informácie: * verejné, súkromné a statické funkčné adresy; * Názov a adresa globálnej premennej; * Názvy parametrov a lokálnych premenných a posuny na zásobníku; * typové definície triedy, štruktúry a dát; * Údaje o vynechaní ukazovateľa rámca pre prechádzanie natívnym zásobníkom na x86; * Názov a počet riadkov v súbore zdrojového kódu;
.NET PDB obsahuje iba 2 časti informácií: * Názov súboru v zdrojovom kóde a počet riadkov; * a názov lokálnej premennej; * Všetky ostatné údaje sú už zahrnuté v . NET Metadata;
|