Neseniai gamybos aplinkoje buvo įdiegtas projektas ir buvo nustatyta, kad kai kurie metodai išmeta anomalius pranešimus
Tačiau pateikiama tik nenormali informacija apie klaidas, o nenormalaus eilutės numerio nėra, tik tai, kad tam tikru metodu yra modelio konvertavimo problema
Bet leiskite man palyginti juos po vieną, tai per daug erzina, kodėl gi neįrašius neteisingo eilutės numerio?
"log4net" žurnalo konfigūracija yra tokia:
Sąmoningai parašiau išimties pranešimą savo vietiniame kompiuteryje Home/Index metodu, kad pamatyčiau, ar eilutės numeris bus įrašytas:
Pastebėjau, kad klaidų žurnalo faile bus įrašytas eilutės numeris, o tai tikrai nėra log4net konfigūracijos problema, nes konfigūracija abiejose pusėse yra vienoda
Ar tai gali būti kompiliavimo režimo problema???
Mano vietinis kompiuteris veikia derinimo režimu, o oficialaus serverio sudarytas DLL veikia išleidimo režimu
Tada pakeičiau vietinį projektą į išleidimo režimą ir pastebėjau, kad tai vis dar yra įrašo eilutės numeris.
Tada, Baidu, pirmas sakinys:Turite nukopijuoti .pdb failą, atitinkantį dll”
Na, ar tai problema? Tada nuėjau tiesiai į šiukšliadėžės katalogą, ištryniau .pdb failą, atitinkantį dll, tada atnaujinau svetainę ir radau išimčių žurnalą taip:
Žinoma, nenormalus eilutės numeris nėra įrašytas!!!!
Ar tai tikrai .pdb problema! Turite išsaugoti .pdb failą, kad eilutės numeris būtų įrašytas, jei jis yra nenormalus!!
Kam skirtas PDB failas?
PDB failai: ką turi žinoti kiekvienas kūrėjas
Kas yra PDB failas?
Dauguma kūrėjų turėtų žinoti, kad PDB failai naudojami siekiant padėti derinti programinę įrangą. Bet kaip tiksliai jis veikia, mes galime nežinoti. Šiame straipsnyje aprašomas PDB failų saugojimas ir turinys. Jame taip pat aprašoma, kaip derintuvas randa PDB failą, atitinkantį binay, ir kaip derintuvas randa šaltinio kodo failą, atitinkantį binay. Šis straipsnis skirtas visiems vietiniams ir valdomiems kūrėjams.
Prieš pradėdami, apibrėžkime du terminus: privatus kūrimas, kuris naudojamas žymėti kūrėją, sugeneruotą paties kūrėjo kompiuteryje; viešoji komponavimo versija, t. y. komponavimas, sukurtas viešajame kūrimo kompiuteryje. privatus statymas yra gana paprastas, nes PDB ir binay yra toje pačioje vietoje, ir paprastai problemos yra susijusios su viešąja statyba.
Svarbiausias dalykas, kurį turi žinoti visi kūrėjai, yra tai, kad "PDB failai yra tokie pat svarbūs kaip ir šaltinio kodas", be kurio net negalite derinti. Viešam kūrimui simbolių serveris turi saugoti visus PDB, o tada, kai vartotojas praneša apie klaidą, derintuvas gali automatiškai rasti atitinkamą PDB failą binay, o "Visual Studio" ir "Windbg" žino, kaip pasiekti simbolių serverį. Prieš saugodami PDB ir binay į simbolių serverį, taip pat turite šaltinio indeksą PDB vykdyti, kuris yra susieti PDB ir šaltinį.
Kitoje dalyje daroma prielaida, kad simbolių serveris ir šaltinio serverio indeksavimas jau yra nustatyti. TFS2010 galima padaryti taip paprastai, kaip šaltinio indeksavimas ir simbolių serverio kopijavimas naujai versijai.
2. PDB failo turinys
Oficialiai pradedant PDB turinį, PDB nėra viešai prieinamas failo formatas, tačiau "Microsoft" pateikia API, padedančią gauti duomenis iš PDB.
Vietiniame C++ PDB yra ši informacija: * viešieji, privatūs ir statiniai funkcijų adresai; * Visuotinio kintamojo pavadinimas ir adresas; * Parametrų ir vietinių kintamųjų pavadinimai ir poslinkiai ant rietuvės; * klasės, struktūros ir duomenų tipų apibrėžimai; * Frame Pointer praleidimo duomenys pereinant gimtąją rietuvę x86; * Šaltinio kodo failo pavadinimas ir eilučių skaičius;
.NET PDB yra tik 2 dalys informacijos: * Šaltinio kodo failo pavadinimas ir eilučių skaičius; * ir vietinio kintamojo pavadinimas; * Visi kiti duomenys jau įtraukti į . NET metaduomenys;
|