Äskettäin tuotantoympäristössä otettiin käyttöön projekti, jossa havaittiin, että jotkut menetelmät heittävät poikkeavia viestejä
Kuitenkin annetaan vain poikkeava virhetieto, eikä poikkeavaa rivinumeroa ole, vaan ainoastaan mallin muunnoksessa on ongelma tietyssä menetelmässä
Mutta annanpa vertailla niitä yksitellen, se on liian ärsyttävää, miksi et kirjaa väärää rivinumeroa?
log4net-lokimääritys on seuraava:
Kirjoitin tarkoituksella poikkeusviestin Home/Index-metodiin paikallisella tietokoneellani nähdäkseni, tallennetaanko rivinumero:
Huomasin, että virhelokitiedosto tallentaa rivinumeron, mikä ei todellakaan ole ongelma log4net-konfiguraatiossa, koska konfiguraatio molemmilla puolilla on sama
Voisiko kyse olla käännösmoodista???
Paikallinen tietokoneeni on debug-tilassa, ja virallisen palvelimen kääntämä DLL on julkaisutilassa
Sitten vaihdoin paikallisen projektin julkaisutilaan ja huomasin, että se oli edelleen levyrivinumero.
Sitten, Baidu, ensimmäinen lause:Sinun täytyy kopioida .pdb-tiedosto, joka vastaa dll:ää”
No, onko tämä ongelma? Sitten menin suoraan bin-hakemistoon, poistin .pdb-tiedoston, joka vastaa dll:ää, ja päivitin sivuston ja löysin poikkeuslokin seuraavasti:
Totta kai, epänormaalia rivinumeroa ei tallenneta!!!!
Onko tämä oikeasti .pdb-ongelma!! Sinun täytyy säilyttää .pdb-tiedosto, jotta rivien numero tallennetaan, jos se on poikkeava!!
Mihin PDB-tiedosto on tarkoitettu?
PDB-tiedostot: Mitä jokaisen kehittäjän tulee tietää
Mikä on PDB-tiedosto?
Useimpien kehittäjien tulisi tietää, että PDB-tiedostoja käytetään ohjelmistovirheen korjaamiseen. Mutta miten hän tarkalleen ottaen toimii, sitä emme ehkä tunne. Tässä artikkelissa kuvataan PDB-tiedostojen tallennustilaa ja sisältöä. Se kuvaa myös, miten debuggeri löytää binay-tiedoston PDB-tiedoston ja miten debuggeri löytää binayn lähdekooditiedoston. Tämä artikkeli on tarkoitettu kaikille Native ja Managed -kehittäjille.
Ennen kuin aloitamme, määritellään kaksi termiä: yksityinen rakennus, jota käytetään tarkoittamaan kehittäjän omalla koneella tuotettua buildia; julkinen rakennus, joka tarkoittaa julkisella koneella luotua buildia. Yksityinen rakentaminen on suhteellisen yksinkertaista, koska PDB ja binay ovat samassa tilanteessa, ja yleensä ongelmat liittyvät julkiseen rakentamiseen.
Tärkein asia, joka kaikkien kehittäjien täytyy tietää, on että "PDB-tiedostot ovat yhtä tärkeitä kuin lähdekoodi", ilman sitä et voi edes debugata. Julkisessa rakentamisessa symbolipalvelimen täytyy tallentaa kaikki PDB:t, ja kun käyttäjä raportoi virheen, virheenkorjaaja löytää automaattisesti vastaavan PDB-tiedoston binaysta, ja sekä Visual Studio että Windbg tietävät, miten käyttää symbolipalvelinta. Ennen kuin PDB ja binay tallennetaan symbolipalvelimelle, sinun täytyy myös indeksoida PDB-suoritus, eli yhdistää PDB ja lähdekoodi.
Seuraava osa olettaa, että Symbol Server ja Source Server Indexing on jo asetettu. TFS2010 voidaan tehdä yhtä yksinkertaisesti kuin lähdeindeksointi ja symbolipalvelimen kopiointi uudelle versiolle.
2. PDB-tiedoston sisältö
Virallisesti PDB:n sisällön aloittaminen ei ole julkisesti saatavilla oleva tiedostomuoto, mutta Microsoft tarjoaa API:n, joka auttaa saamaan dataa PDB:stä.
Natiivi C++ PDB sisältää seuraavat tiedot: * julkiset, yksityiset ja staattiset funktioosoitteet; * Globaalin muuttujan nimi ja osoite; * Parametrien ja paikallisten muuttujien nimet sekä siirtymät pinossa; * luokka-, rakenteen ja datan tyypin määrittelyt; * Frame Pointer Omission data native stackin läpikäyntiä varten x86:lla; * Nimi ja rivien määrä lähdekooditiedostossa;
.NET PDB sisältää vain kaksi osaa tietoa: * Lähdekooditiedoston nimi ja rivien määrä; * ja paikallisen muuttujan nimi; * Kaikki muu data sisältyy jo . NET-metatiedot;
|