Za kaj je PDB datoteka?
PDB datoteke: Kar mora vsak razvijalec vedeti
Primer scenarija PDB:
Kaj je PDB datoteka?
Večina razvijalcev bi morala vedeti, da se PDB datoteke uporabljajo za pomoč pri razhroščevanju programske opreme. A kako točno deluje, morda ne vemo. Ta članek opisuje shranjevanje in vsebino datotek PDB. Prav tako opisuje, kako razhroščevalnik najde PDB datoteko, ki ustreza binayu, in kako najde izvorno kodo, ki ustreza binayu. Ta članek je namenjen vsem nativnim in upravljanim razvijalcem.
Preden začnemo, definirajmo dva pojma: zasebna gradnja, ki označuje gradnjo, ustvarjeno na razvijalcovi lastni napravi; javna gradnja, kar pomeni gradnjo, ustvarjeno na stroju za javno gradnjo. zasebna gradnja je razmeroma preprosta, ker sta PDB in Binay na istem mestu, običajno pa so težave, ki jih imamo, povezane z javno gradnjo.
Najpomembnejša stvar, ki jo morajo vsi razvijalci vedeti, je, da so "PDB datoteke prav tako pomembne kot izvorna koda", brez katere ne morete niti odpravljati napak. Za javno gradnjo mora strežnik simbolov shraniti vse PDB-je, nato pa, ko uporabnik prijavi napako, razhroščevalec samodejno najde ustrezno PDB datoteko v binayu, tako Visual Studio kot Windbg pa vesta, kako dostopati do strežnika simbolov. Preden shraniš PDB in binay na strežnik simbolov, moraš tudi indeksirati izvorno točko PDB, torej povezati PDB in izvorno kodo.
Naslednji del predpostavlja, da sta Symbol Server in Source Server Indexing že vzpostavljena. TFS2010 je mogoče narediti tako preprosto kot indeksiranje izvorne kodo in kopiranje strežnika simbolov za novo različico.
2. Vsebina datoteke PDB
Uradno se je začela vsebina PDB, PDB ni javno dostopen datotečni format, vendar Microsoft zagotavlja API za pridobivanje podatkov iz PDB.
Izvorni C++ PDB vsebuje naslednje informacije: * javni, zasebni in statični naslovi funkcij; * Ime in naslov globalne spremenljivke; * Imena parametrov in lokalnih spremenljivk ter premiki na skladu; * tipdefinicije razreda, strukture in podatkov; * Podatki o izpustitvi kazalnika sličic za prečkanje izvornega sklada na x86; * Ime in število vrstic v datoteki izvorne kode;
.NET PDB vsebuje le 2 dela informacij: * Ime datoteke izvorne kode in število vrstic; * in ime lokalne spremenljivke; * Vsi ostali podatki so že vključeni v . NET metapodatki;
|