Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 27663|Atsakyti: 0

[Šaltinis] .net/c# log4net klaidos išimtis neįrašo eilutės numerio priežasties

[Kopijuoti nuorodą]
Paskelbta 2017-08-03 14:13:01 | | | |
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:

C# Log4net žurnalo konfigūracija išsamiai paaiškinta
http://www.itsvse.com/thread-2892-1-1.html
(Šaltinis: Architektas)

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;  





Ankstesnis:Diskas neprisijungęs dėl administratoriaus nustatytos strategijos
Kitą:Raskite svetainės techniką, kad galėtumėte pradėti verslą kartu
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com