Hiljuti paigaldati projekt tootmiskeskkonnas ja avastati, et mõned meetodid viskavad välja anomaalseid sõnumeid
Kuid antud on ainult ebanormaalne veainfo, ebanormaalset reanumbrit ei ole, vaid ainult see, et mudeli teisendamisel on probleem teatud meetodis
Aga las ma võrdlen neid ükshaaval, see on liiga tüütu, miks mitte salvestada vale reanumber?
log4net logi konfiguratsioon on järgmine:
Kirjutasin teadlikult erandsõnumi Home/Index meetodis oma kohalikus arvutis, et näha, kas rea number salvestatakse:
Leidsin, et vealogifail salvestab rea numbri, mis kindlasti ei ole log4net konfiguratsiooni probleem, sest mõlemal pool on konfiguratsioon sama
Kas probleem võib olla kompileerimisrežiimis???
Minu kohalik arvuti on silumisrežiimis ja ametliku serveri kompileeritud dll on väljalaskerežiimis
Seejärel muutsin kohaliku projekti väljalaskerežiimile ja avastasin, et see oli endiselt plaadirea number.
Siis, Baidu, esimene lause:Pead kopeerima .pdb faili, mis vastab dll-ile”
Kas see on probleem? Seejärel läksin otse bin kataloogi, kustutasin .pdb faili, mis vastab dll-ile, ja värskendasin veebilehte, leides erandlogi järgmiselt:
Ja tõepoolest, ebanormaalset rea numbrit ei salvestata!!!!
Kas see on tõesti .pdb probleem!! Pead hoidma .pdb faili, et rea number salvestataks, kui see on ebanormaalne!!
Milleks on PDB fail?
PDB failid: Mida iga arendaja peab teadma
Mis on PDB fail?
Enamik arendajaid peaks teadma, et PDB-faile kasutatakse tarkvaralise silumise abistamiseks. Aga kuidas ta täpselt töötab, seda me ei pruugi teada. See artikkel kirjeldab PDB-failide salvestust ja sisu. See kirjeldab ka, kuidas silur leiab PDB-faili, mis vastab binaile, ja kuidas silur leiab lähtekoodifaili, mis vastab binay'le. See artikkel on mõeldud kõigile natiivsetele ja hallatud arendajatele.
Enne kui alustame, defineerime kaks mõistet: privaatne ehitus, mida kasutatakse arendaja enda masinal genereeritud ehituse tähistamiseks; avalik ehitus, mis tähendab ehitust, mis genereeritakse avaliku ehitusmasina peal. Privaatne ehitus on suhteliselt lihtne, sest PDB ja binay asuvad samas kohas ning tavaliselt on probleemid avaliku ehitusega seotud.
Kõige olulisem, mida kõik arendajad peavad teadma, on see, et "PDB-failid on sama olulised kui lähtekood", ilma milleta sa isegi siluda ei saa. Avaliku ehituse puhul peab sümboliserver salvestama kõik PDB-d ning kui kasutaja teatab veast, leiab silur automaatselt vastava PDB-faili binay's ning nii Visual Studio kui ka Windbg teavad, kuidas sümboliserverile ligi pääseda. Enne PDB ja binay salvestamist sümboliserverisse tuleb ka PDB käivitamise lähteindeks, mis seob PDB ja allika.
Järgmine osa eeldab, et sümboliserver ja lähteserveri indekseerimine on juba seadistatud. TFS2010 saab teha nii lihtsalt kui allika indekseerimine ja sümboliserveri kopeerimine uue ehituse jaoks.
2. PDB faili sisu
PDB sisu ametlikult alustades ei ole PDB avalikult kättesaadav failivorming, kuid Microsoft pakub API-d, mis aitab PDB-lt andmeid saada.
Natiivse C++ PDB sisaldab järgmist teavet: * avalikud, privaatsed ja staatilised funktsiooniaadressid; * Globaalmuutuja nimi ja aadress; * Parameetrite ja lokaalsete muutujate nimed ning nihked virnas; * klassi, struktuuri ja andmete tüübimääratlused; * Frame Pointer Unmission andmed natiivse virna läbimiseks x86 peal; * Nimi ja ridade arv lähtekoodifailis;
.NET PDB sisaldab ainult kahte infoosa: * Lähtekoodifaili nimi ja ridade arv; * ja lokaalmuutuja nimi; * Kõik muud andmed on juba lisatud . NET metaandmed;
|