Kam paredzēts PDB fails?
PDB faili: kas jāzina katram izstrādātājam
PBP scenārija piemērs:
Kas ir PDB fails?
Lielākajai daļai izstrādātāju jāzina, ka PDB faili tiek izmantoti, lai palīdzētu programmatūras atkļūdošanai. Bet kā tieši viņš darbojas, mēs, iespējams, neesam pazīstami. Šajā rakstā ir aprakstīta PDB failu glabāšana un saturs. Tajā arī aprakstīts, kā atkļūdotājs atrod PDB failu, kas atbilst binay, un kā atkļūdotājs atrod avota koda failu, kas atbilst binay. Šis raksts ir paredzēts visiem vietējiem un pārvaldītajiem izstrādātājiem.
Pirms sākam, definēsim divus terminus: privāta būve, ko izmanto, lai apzīmētu izstrādātāja datorā ģenerētu būvējumu; publiskā būvēšana, kas nozīmē būvējumu, kas ģenerēts publiskā būvēšanas mašīnā. privātā būvniecība ir salīdzinoši vienkārša, jo PDB un binay atrodas vienā vietā, un parasti problēmas, kas mums ir, ir saistītas ar publisko būvniecību.
Vissvarīgākais, kas jāzina visiem izstrādātājiem, ir tas, ka "PDB faili ir tikpat svarīgi kā avota kods", bez kura jūs pat nevarat atkļūdot. Publiskai būvēšanai simbolu serverim ir jāglabā visi PDB, un tad, kad lietotājs ziņo par kļūdu, atkļūdotājs var automātiski atrast atbilstošo PDB failu binay, un gan Visual Studio, gan Windbg zina, kā piekļūt simbolu serverim. Pirms PDB un binay glabāšanas simbolu serverī, jums ir nepieciešams arī avota indekss PDB palaist, kas ir saistīt PDB un avotu.
Nākamajā daļā tiek pieņemts, ka simbolu serveris un avota servera indeksēšana jau ir iestatīti. TFS2010 var izdarīt tikpat vienkārši kā avota indeksēšanu un simbolu servera kopēšanu jaunai būvei.
2) PDB faila saturs
Oficiāli sākot PDB saturu, PDB nav publiski pieejams faila formāts, bet Microsoft nodrošina API, lai palīdzētu iegūt datus no PDB.
Vietējais C++ PDB satur šādu informāciju: * publiskās, privātās un statiskās funkciju adreses; * Globālā mainīgā nosaukums un adrese; * Parametru un vietējo mainīgo nosaukumi un nobīdes uz steka; * klases, struktūras un datu tipa definīcijas; * Kadra rādītāja izlaišanas dati, lai šķērsotu vietējo steku x86; * Nosaukums un rindu skaits avota koda failā;
.NET PDB satur tikai 2 informācijas daļas: * Avota koda faila nosaukums un rindu skaits; * un vietējā mainīgā nosaukums; * Visi pārējie dati jau ir iekļauti . NET metadati;
|