For nylig blev et projekt implementeret i et produktionsmiljø, og det blev opdaget, at nogle metoder udsendte unormale beskeder
Dog gives kun unormal fejlinformation, og der er ikke noget unormalt linjenummer, kun at der er et problem med modelkonverteringen i en bestemt metode
Men lad mig sammenligne dem én efter én, det er for irriterende, hvorfor ikke notere det forkerte linjenummer?
logkonfigurationen for log4net er som følger:
Jeg skrev bevidst en undtagelsesbesked i Home/Index-metoden på min lokale computer for at se, om linjenummeret ville blive registreret:
Jeg fandt ud af, at fejl-logfilen registrerer linjenummeret, hvilket bestemt ikke er et problem med log4net-konfigurationen, fordi konfigurationen på begge sider er den samme
Kan det være et problem med kompilationsmode???
Min lokale computer er i debug-tilstand, og DLL'en, som den officielle server har kompileret, er i udgivelsestilstand
Derefter ændrede jeg det lokale projekt til udgivelsestilstand og fandt ud af, at det stadig var et linjenummer for posten.
Så, Baidu, den første sætning:Du skal kopiere .pdb-filen, der svarer til dll'en”
Nå, er det et problem? Derefter gik jeg direkte til bin-mappen, slettede .pdb-filen, der svarede til dll'en, og opdaterede hjemmesiden og fandt undtagelsesloggen som følger:
Ganske rigtigt bliver det unormale linjenummer ikke registreret!!!!
Er det virkelig et .pdb-problem!! Du skal gemme .pdb-filen, så linjenummeret bliver registreret, hvis det er unormalt!!
Hvad er en PDB-fil til?
PDB-filer: Hvad enhver udvikler skal vide
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;
|