Mire való a PDB fájl?
PDB fájlok: Amit minden fejlesztőnek tudnia kell
Példa PDB forgatókönyvre:
Mi az a PDB fájl?
A legtöbb fejlesztőnek tudnia kell, hogy a PDB fájlokat a szoftveres hibakeresés segítésére használják. De pontosan hogyan működik, azt talán nem ismerjük. Ez a cikk a PDB fájlok tárolását és tartalmát írja le. Azt is leírja, hogyan találja meg a hibakereső a binay-hoz tartozó PDB fájlt, és hogyan találja meg a biny-hez tartozó forráskódfájlt. Ez a cikk minden natív és menedzselt fejlesztőnek szól.
Mielőtt elkezdenénk, definiáljunk két fogalmat: privát build, amely a fejlesztő saját gépén generált buildet jelöl; A nyilvános build, ami egy nyilvános gépen generált build buildet jelent. A magán építés viszonylag egyszerű, mert a PDB és a binay ugyanott van, és általában a nyilvános építéssel kapcsolatos problémák jelentkeznek.
A legfontosabb, amit minden fejlesztőnek tudnia kell, hogy "a PDB fájlok ugyanolyan fontosak, mint a forráskód", amelyek nélkül még hibakeresést sem lehet elérni. Nyilvános építésnél a szimbólumszervernek tárolnia kell az összes PDB-t, és amikor a felhasználó hibát jelent, a hibakereső automatikusan megtalálja a megfelelő PDB fájlt binayben, és mind a Visual Studio, mind a Windbg tudja, hogyan lehet hozzáférni a szimbólumszerverhez. Mielőtt a PDB és a binay szimbólumszerverre tárolná, a PDB futtatását is forrásindexelni kell, ami a PDB és a forrás összekapcsolása.
A következő rész feltételezi, hogy a Szimbólumszerver és a Forrásszerver Indexelés már be van állítva. TFS2010 egyszerűen elérhető a forrásindexeléssel és a szimbólumszerver másolásával egy új buildhez.
2. A PDB fájl tartalma
Hivatalosan is elindítva a PDB tartalmát, a PDB nem nyilvánosan elérhető fájlformátum, de a Microsoft API-t biztosít, amely segít adatokat szerezni a PDB-ről.
A natív C++ PDB a következő információkat tartalmazza: * nyilvános, privát és statikus funkciós címek; * A globális változó neve és címe; * Paraméter- és helyi változónevek és eloszlatások a veremen; * osztály, struktúra és adatok típusmeghatározása; * Frame Pointer kihagyási adatok a natív stack áthaladásához x86-on; * A forráskód fájl neve és sorszáma;
A .NET PDB csak két információs részt tartalmaz: * Forráskódfájl neve és sorszám; * és a helyi változó neve; * Minden egyéb adat már szerepel a . NET metaadat;
|