Hvad er en PDB-fil til?
PDB-filer: Hvad enhver udvikler skal vide
Eksempel på PDB-scenarie:
Hvad er en PDB-fil?
De fleste udviklere bør vide, at PDB-filer bruges til at hjælpe med softwarefejlfinding. Men hvordan han præcist fungerer, kender vi måske ikke til. Denne artikel beskriver lagring og indhold af PDB-filer. Den beskriver også, hvordan debuggeren finder PDB-filen, der svarer til binay, og hvordan debuggeren finder kildekodefilen, der svarer til binay. Denne artikel er for alle Native- og Managed-udviklere.
Før vi begynder, lad os definere to begreber: privat build, som bruges til at betegne en build genereret på udviklerens egen maskine; offentlig build, hvilket betyder en build genereret på en offentlig build-maskine. privat byggeri er relativt enkelt, fordi PDB og Binay ligger samme sted, og som regel handler problemerne om offentlig byggeri.
Det vigtigste, som alle udviklere skal vide, er, at "PDB-filer er lige så vigtige som kildekode", uden hvilken du ikke engang kan fejlfinde. For offentlig build skal symbolserveren gemme alle PDB'erne, og når brugeren rapporterer en fejl, kan debuggeren automatisk finde den tilsvarende PDB-fil i binay, og både Visual Studio og Windbg ved, hvordan man får adgang til symbolserveren. Før du gemmer PDB og binay til symbolserveren, skal du også kildeindeksere PDB-kørslen, hvilket er for at associere PDB og kilde.
Næste del antager, at Symbol Server og Source Server Indexing allerede er sat op. TFS2010 kan gøres lige så enkelt som kildeindeksering og symbolserverkopiering til en ny build.
2. Indholdet af PDB-filen
Officielt startede PDB-indholdet op, PDB er ikke et offentligt tilgængeligt filformat, men Microsoft tilbyder et API til at hjælpe med at hente data fra PDB.
Den oprindelige C++ PDB indeholder følgende information: * offentlige, private og statiske funktionsadresser; * Navnet og adressen på den globale variabel; * Parameter- og lokale variabelnavne og offsets på stakken; * typedefinitioner af klasse, struktur og data; * Frame Pointer udeladelsesdata for at gennemgå den native stack på x86; * Navnet og antallet af linjer i kildekodefilen;
.NET PDB'en indeholder kun 2 dele af informationen: * Kildekodefilens navn og antal linjer; * og navnet på den lokale variabel; * Alle andre data er allerede inkluderet i . NET Metadata;
|