Vad är en PDB-fil till för?
PDB-filer: Vad varje utvecklare måste veta
Exempel på PDB-scenario:
Vad är en PDB-fil?
De flesta utvecklare bör veta att PDB-filer används för att hjälpa till med felsökning av mjukvara. Men hur han exakt fungerar kanske vi inte är bekanta med. Denna artikel beskriver lagringen och innehållet i PDB-filer. Den beskriver också hur felsökaren hittar PDB-filen som motsvarar binay och hur felsökaren hittar källkodsfilen som motsvarar binay. Den här artikeln är för alla Native- och Managed-utvecklare.
Innan vi börjar, låt oss definiera två termer: privat build, som används för att beteckna en build genererad på utvecklarens egen maskin; offentlig build, vilket betyder en build genererad på en offentlig build-maskin. privat byggnation är relativt enkel, eftersom PDB och Binay är på samma plats, och vanligtvis handlar problemen vi har om offentlig byggnation.
Det viktigaste som alla utvecklare behöver veta är att "PDB-filer är lika viktiga som källkod", utan vilka du inte ens kan felsöka. För publik build måste symbolservern lagra alla PDB:er, och när användaren rapporterar ett fel kan felsökaren automatiskt hitta motsvarande PDB-fil i binay, och både Visual Studio och Windbg vet hur man får tillgång till symbolservern. Innan du lagrar PDB och binay till symbolservern behöver du också source indexera PDB-körningen, vilket innebär att associera PDB och source.
Nästa del förutsätter att Symbolserver- och Source Server-indexeringen redan är uppsatta. TFS2010 kan göras lika enkelt som källkodsindexering och symbolserverkopiering för en ny build.
2. Innehållet i PDB-filen
Officiellt startade PDB:s innehåll och PDB är inte ett offentligt tillgängligt filformat, men Microsoft tillhandahåller ett API för att hjälpa till att hämta data från PDB.
Den inbyggda C++ PDB:n innehåller följande information: * offentliga, privata och statiska funktionsadresser; * Namnet och adressen till den globala variabeln; * Parameter- och lokala variabelnamn samt offsets på stacken; * typdefinitioner av klass, struktur och data; * Frame Pointer Utelämnande data för att traversera den inbyggda stacken på x86; * Namnet och antalet rader i källkodsfilen;
.NET PDB innehåller endast två delar av informationen: * Källkodsfilnamn och antal rader; * och namnet på den lokala variabeln; * All annan data ingår redan i . NET-metadata;
|