Kam skirtas PDB failas?
PDB failai: ką turi žinoti kiekvienas kūrėjas
PBP scenarijaus pavyzdys:
Kas yra PDB failas?
Dauguma kūrėjų turėtų žinoti, kad PDB failai naudojami siekiant padėti derinti programinę įrangą. Bet kaip tiksliai jis veikia, mes galime nežinoti. Šiame straipsnyje aprašomas PDB failų saugojimas ir turinys. Jame taip pat aprašoma, kaip derintuvas randa PDB failą, atitinkantį binay, ir kaip derintuvas randa šaltinio kodo failą, atitinkantį binay. Šis straipsnis skirtas visiems vietiniams ir valdomiems kūrėjams.
Prieš pradėdami, apibrėžkime du terminus: privatus kūrimas, kuris naudojamas žymėti kūrėją, sugeneruotą paties kūrėjo kompiuteryje; viešoji komponavimo versija, t. y. komponavimas, sukurtas viešajame kūrimo kompiuteryje. privatus statymas yra gana paprastas, nes PDB ir binay yra toje pačioje vietoje, ir paprastai problemos yra susijusios su viešąja statyba.
Svarbiausias dalykas, kurį turi žinoti visi kūrėjai, yra tai, kad "PDB failai yra tokie pat svarbūs kaip ir šaltinio kodas", be kurio net negalite derinti. Viešam kūrimui simbolių serveris turi saugoti visus PDB, o tada, kai vartotojas praneša apie klaidą, derintuvas gali automatiškai rasti atitinkamą PDB failą binay, o "Visual Studio" ir "Windbg" žino, kaip pasiekti simbolių serverį. Prieš saugodami PDB ir binay į simbolių serverį, taip pat turite šaltinio indeksą PDB vykdyti, kuris yra susieti PDB ir šaltinį.
Kitoje dalyje daroma prielaida, kad simbolių serveris ir šaltinio serverio indeksavimas jau yra nustatyti. TFS2010 galima padaryti taip paprastai, kaip šaltinio indeksavimas ir simbolių serverio kopijavimas naujai versijai.
2. PDB failo turinys
Oficialiai pradedant PDB turinį, PDB nėra viešai prieinamas failo formatas, tačiau "Microsoft" pateikia API, padedančią gauti duomenis iš PDB.
Vietiniame C++ PDB yra ši informacija: * viešieji, privatūs ir statiniai funkcijų adresai; * Visuotinio kintamojo pavadinimas ir adresas; * Parametrų ir vietinių kintamųjų pavadinimai ir poslinkiai ant rietuvės; * klasės, struktūros ir duomenų tipų apibrėžimai; * Frame Pointer praleidimo duomenys pereinant gimtąją rietuvę x86; * Šaltinio kodo failo pavadinimas ir eilučių skaičius;
.NET PDB yra tik 2 dalys informacijos: * Šaltinio kodo failo pavadinimas ir eilučių skaičius; * ir vietinio kintamojo pavadinimas; * Visi kiti duomenys jau įtraukti į . NET metaduomenys;
|