Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 27663|Svare: 0

[Kilde] .net/c# log4net-feilunntak registrerer ikke årsaken til linjenummeret

[Kopier lenke]
Publisert på 03.08.2017 14:13:01 | | | |
Nylig ble et prosjekt distribuert i et produksjonsmiljø, og det ble oppdaget at noen metoder kastet ut unormale meldinger

Imidlertid gis kun unormal feilinformasjon, og det finnes ikke noe unormalt linjenummer, bare at det er et problem med modellkonverteringen i en bestemt metode

Men la meg sammenligne dem én etter én, det er for irriterende, hvorfor ikke ta opp feil linjenummer?

log4net-loggkonfigurasjonen er som følger:

C# Log4net-loggkonfigurasjon forklares i detalj
http://www.itsvse.com/thread-2892-1-1.html
(Kilde: Arkitekt)

Jeg skrev bevisst en unntaksmelding i Home/Index-metoden på min lokale datamaskin for å se om linjenummeret ville bli registrert:



Jeg fant ut at feilloggfilen registrerer linjenummeret, noe som definitivt ikke er et problem med log4net-konfigurasjonen, fordi konfigurasjonen på begge sider er den samme

Kan det være et problem med kompilasjonsmodusen???

Min lokale datamaskin er i feilsøkingsmodus, og DLL-en som er kompilert av den offisielle serveren er i utgivelsesmodus

Deretter endret jeg det lokale prosjektet til utgivelsesmodus, og fant ut at det fortsatt var et linjenummer på posten.

Så, Baidu, første setning:Du må kopiere .pdb-filen som tilsvarer dll-filen

Vel, er dette et problem? Deretter gikk jeg direkte til bin-katalogen, slettet .pdb-filen som tilhørte dll-en, og oppdaterte nettsiden, og fant unntaksloggen som følger:



Joda, det unormale linjenummeret blir ikke registrert!!!!

Er det virkelig et .pdb-problem!! Du må beholde .pdb-filen slik at linjenummeret blir registrert hvis det er unormalt!!



Hva er en PDB-fil til?


PDB-filer: Det enhver utvikler må vite

Hva er en PDB-fil?

De fleste utviklere bør vite at PDB-filer brukes til å hjelpe med feilsøking av programvare. Men hvordan han egentlig fungerer, er vi kanskje ikke kjent med. Denne artikkelen beskriver lagring og innhold i PDB-filer. Den beskriver også hvordan debuggeren finner PDB-filen som tilsvarer binay, og hvordan debuggeren finner kildekodefilen som tilsvarer binay. Denne artikkelen er for alle Native- og Managed-utviklere.

Før vi begynner, la oss definere to begreper: privat build, som brukes for å betegne en build generert på utviklerens egen maskin; offentlig build, som betyr en build generert på en offentlig build-maskin. privat bygging er relativt enkelt, fordi PDB og Binay er på samme sted, og vanligvis handler problemene vi har om offentlig bygging.  

Det viktigste alle utviklere må vite, er at «PDB-filer er like viktige som kildekode», uten hvilken du ikke engang kan feilsøke. For offentlig build må symbolserveren lagre alle PDB-ene, og når brukeren rapporterer en feil, kan debuggeren automatisk finne den tilsvarende PDB-filen i binay, og både Visual Studio og Windbg vet hvordan de får tilgang til symbolserveren. Før du lagrer PDB og binay til symbolserveren, må du også kildeindeksere PDB-kjøringen, altså assosiere PDB og kilde.  

Neste del forutsetter at Symbolserver- og Source Server-indekseringen allerede er satt opp. TFS2010 kan gjøres like enkelt som kildeindeksering og symbolserverkopiering for en ny build.

2. Innholdet i PDB-filen

PDB startet offisielt innholdet i PDB, og er ikke et offentlig tilgjengelig filformat, men Microsoft tilbyr et API for å hjelpe med å hente data fra PDB.

Den native C++ PDB-en inneholder følgende informasjon:
* offentlige, private og statiske funksjonsadresser;
* Navnet og adressen til den globale variabelen;
* Parameter- og lokale variabelnavn og forskyvninger på stakken;
* typedefinisjoner av klasse, struktur og data;
* Frame Pointer-utelatelsesdata for å traversere den native stakken på x86;
* Navnet og antall linjer i kildekodefilen;

.NET PDB-en inneholder kun to deler av informasjonen:
* Kildekodefilnavn og antall linjer;
* og navnet på den lokale variabelen;
* Alle andre data er allerede inkludert i . NET-metadata;  





Foregående:Disken er offline på grunn av policyen satt av administratoren
Neste:Finn en nettsidetekniker for å starte en bedrift sammen
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com