Nedavno je bil projekt uveden v produkcijskem okolju in odkrili so, da nekatere metode pošiljajo anomalna sporočila
Vendar so podane le informacije o nenormalni napaki, nenormalna številka vrstice pa ni, le da obstaja težava s pretvorbo modela na določen način
Ampak naj jih primerjam enega za drugim, to je preveč nadležno, zakaj ne bi zapisali napačne številke vrstice?
Log4net loglog konfiguracija je naslednja:
Namenoma sem napisal sporočilo o izjemi v metodi Home/Index na svojem lokalnem računalniku, da vidim, ali bo številka vrstice zabeležena:
Ugotovil sem, da datoteka error log zabeleži številko vrstice, kar zagotovo ni problem pri log4net konfiguraciji, saj je konfiguracija na obeh straneh enaka
Ali je morda težava v načinu prevajanja???
Moj lokalni računalnik je v debug načinu, dll, ki ga je sestavil uradni strežnik, pa je v release načinu
Nato sem lokalni projekt spremenil v način izdaje in ugotovil, da je še vedno številka vrstice zapisa.
Nato, Baidu, prvi stavek:Kopirati moraš .pdb datoteko, ki ustreza dll”
No, je to problem? Nato sem šel neposredno v mapo bin, izbrisal .pdb datoteko, ki ustreza dll-ju, nato osvežil spletno stran in našel dnevnik izjem tako:
In res, nenavadna številka vrstice ni zabeležena!!!!
Je res problem .pdb!! Datoteko .pdb morate obdržati, da bo številka vrstice zabeležena, če je nenavadna!!
Za kaj je PDB datoteka?
PDB datoteke: Kar mora vsak razvijalec vedeti
Kaj je PDB datoteka?
Večina razvijalcev bi morala vedeti, da se PDB datoteke uporabljajo za pomoč pri razhroščevanju programske opreme. A kako točno deluje, morda ne vemo. Ta članek opisuje shranjevanje in vsebino datotek PDB. Prav tako opisuje, kako razhroščevalnik najde PDB datoteko, ki ustreza binayu, in kako najde izvorno kodo, ki ustreza binayu. Ta članek je namenjen vsem nativnim in upravljanim razvijalcem.
Preden začnemo, definirajmo dva pojma: zasebna gradnja, ki označuje gradnjo, ustvarjeno na razvijalcovi lastni napravi; javna gradnja, kar pomeni gradnjo, ustvarjeno na stroju za javno gradnjo. zasebna gradnja je razmeroma preprosta, ker sta PDB in Binay na istem mestu, običajno pa so težave, ki jih imamo, povezane z javno gradnjo.
Najpomembnejša stvar, ki jo morajo vsi razvijalci vedeti, je, da so "PDB datoteke prav tako pomembne kot izvorna koda", brez katere ne morete niti odpravljati napak. Za javno gradnjo mora strežnik simbolov shraniti vse PDB-je, nato pa, ko uporabnik prijavi napako, razhroščevalec samodejno najde ustrezno PDB datoteko v binayu, tako Visual Studio kot Windbg pa vesta, kako dostopati do strežnika simbolov. Preden shraniš PDB in binay na strežnik simbolov, moraš tudi indeksirati izvorno točko PDB, torej povezati PDB in izvorno kodo.
Naslednji del predpostavlja, da sta Symbol Server in Source Server Indexing že vzpostavljena. TFS2010 je mogoče narediti tako preprosto kot indeksiranje izvorne kodo in kopiranje strežnika simbolov za novo različico.
2. Vsebina datoteke PDB
Uradno se je začela vsebina PDB, PDB ni javno dostopen datotečni format, vendar Microsoft zagotavlja API za pridobivanje podatkov iz PDB.
Izvorni C++ PDB vsebuje naslednje informacije: * javni, zasebni in statični naslovi funkcij; * Ime in naslov globalne spremenljivke; * Imena parametrov in lokalnih spremenljivk ter premiki na skladu; * tipdefinicije razreda, strukture in podatkov; * Podatki o izpustitvi kazalnika sličic za prečkanje izvornega sklada na x86; * Ime in število vrstic v datoteki izvorne kode;
.NET PDB vsebuje le 2 dela informacij: * Ime datoteke izvorne kode in število vrstic; * in ime lokalne spremenljivke; * Vsi ostali podatki so že vključeni v . NET metapodatki;
|