K čemu slouží soubor PDB?
PDB soubory: Co musí vědět každý vývojář
Příklad scénáře PDB:
Co je to PDB soubor?
Většina vývojářů by měla vědět, že soubory PDB se používají k pomoci s laděním softwaru. Ale jak přesně funguje, to možná neznáme. Tento článek popisuje ukládání a obsah souborů PDB. Také popisuje, jak debugger najde PDB soubor odpovídající binay a jak debugger najde zdrojový kód odpovídající binay. Tento článek je určen všem nativním a spravovaným vývojářům.
Než začneme, definujme dva pojmy: soukromá sestava, která označuje sestavení generované na počítači vývojáře; Public build, což znamená build generovaný na public build stroji. Soukromá stavba je relativně jednoduchá, protože PDB a Binay jsou na stejném místě a obvykle máme problémy s veřejnou výstavbou.
Nejdůležitější věc, kterou by všichni vývojáři měli vědět, je, že "PDB soubory jsou stejně důležité jako zdrojový kód", bez kterého ani nemůžete ladit. Pro veřejnou sestavu musí symbol server uložit všechny PDB a když uživatel nahlásí chybu, debugger automaticky najde odpovídající PDB soubor v binay, a jak Visual Studio, tak Windbg vědí, jak se k symbolovému serveru připoutat. Před uložením PDB a binay na symbol server je také potřeba zaindexovat zdrojový kód běhu PDB, což znamená přiřadit PDB a zdroj.
Další část předpokládá, že Symbol Server a Source Server Indexing jsou již nastaveny. TFS2010 lze provést stejně jednoduše jako indexování zdrojů a kopírování symbolového serveru pro novou sestavu.
2. Obsah souboru PDB
Oficiálně začal obsah PDB, PDB není veřejně dostupný formát souboru, ale Microsoft poskytuje API, které pomáhá získávat data z PDB.
Nativní C++ PDB obsahuje následující informace: * veřejné, soukromé a statické funkce adres; * Název a adresa globální proměnné; * Názvy parametrů a lokálních proměnných a posuny na zásobníku; * typové definice třídy, struktury a dat; * Data o vynechání ukazatele snímku pro procházení nativního zásobníku na x86; * Název a počet řádků ve zdrojovém kódu;
.NET PDB obsahuje pouze 2 části informací: * Název souboru a počet řádků ve zdrojovém kódu; * a název lokální proměnné; * Všechna ostatní data jsou již zahrnuta v . NET Metadata;
|