Nedávno bol projekt nasadený v produkčnom prostredí a zistilo sa, že niektoré metódy vyhadzujú anomálne správy
Avšak sú uvedené iba abnormálne chybové informácie a neexistuje abnormálne číslo riadku, iba že existuje problém s konverziou modelu určitým spôsobom
Ale porovnám ich jeden po druhom, je to príliš otravné, prečo nenahrať nesprávne číslo riadku?
Log4net logová konfigurácia je nasledovná:
Úmyselne som napísal správu výnimky v metóde Home/Index na mojom lokálnom počítači, aby som zistil, či sa číslo riadku zaznamená:
Zistil som, že súbor error logu zaznamená číslo riadku, čo určite nie je problém s log4net konfiguráciou, pretože konfigurácia na oboch stranách je rovnaká
Môže to byť problém v režime kompilácie???
Môj lokálny počítač je v debug mode a dll skompilovaný oficiálnym serverom je v režime vydania
Potom som zmenil lokálny projekt na režim uvoľnenia a zistil som, že to stále bolo číslo riadku záznamu.
Potom, Baidu, prvá veta:Musíte skopírovať .pdb súbor zodpovedajúci dll”
No, je to problém? Potom som išiel priamo do adresára bin, vymazal .pdb súbor zodpovedajúci dll, obnovil webstránku a našiel záznam výnimiek nasledovne:
A naozaj, abnormálne číslo linky nie je zaznamenané!!!!
Je to naozaj problém s .pdb!! Musíte si ponechať .pdb súbor, aby sa číslo riadku zaznamenalo, ak je nezvyčajné!!
Na čo slúži PDB súbor?
PDB súbory: Čo musí vedieť každý vývojár
Čo je to PDB súbor?
Väčšina vývojárov by mala vedieť, že PDB súbory sa používajú na podporu ladenia softvéru. Ale ako presne funguje, možno nevieme. Tento článok popisuje úložisko a obsah súborov PDB. Tiež popisuje, ako debugger nájde PDB súbor zodpovedajúci binay a ako debugger nájde zdrojový kódový súbor zodpovedajúci binay. Tento článok je určený pre všetkých natívnych a spravovaných vývojárov.
Predtým, než začneme, definujme dva pojmy: súkromná zostava, ktorá označuje zostavu generovanú na vlastnom počítači vývojára; Public build, čo znamená build generovaný na verejnom build stroji. Súkromná stavba je relatívne jednoduchá, pretože PDB a Binay sú na rovnakom mieste a zvyčajne máme problémy s verejnou výstavbou.
Najdôležitejšie, čo by mali všetci vývojári vedieť, je, že "PDB súbory sú rovnako dôležité ako zdrojový kód", bez ktorého sa ani nedá ladiť. Pri verejnej zostave musí symbol server uložiť všetky PDB a keď používateľ nahlási chybu, debugger automaticky nájde príslušný PDB súbor v binay a Visual Studio aj Windbg vedia, ako sa k symbolovému serveru dostať. Pred uložením PDB a binay na symbol server je potrebné tiež zaindexovať zdrojový index behu PDB, teda priradiť PDB a zdroj.
Ďalšia časť predpokladá, že Symbol Server a Source Server Indexing sú už nastavené. TFS2010 je možné urobiť rovnako jednoducho ako indexovanie zdrojového kódu a kopírovanie symbolového servera pre novú zostavu.
2. Obsah súboru PDB
Oficiálne začínajúc obsah PDB, PDB nie je verejne dostupný formát súboru, ale Microsoft poskytuje API, ktoré pomáha získavať dáta z PDB.
Natívny C++ PDB obsahuje nasledujúce informácie: * verejné, súkromné a statické funkčné adresy; * Názov a adresa globálnej premennej; * Názvy parametrov a lokálnych premenných a posuny na zásobníku; * typové definície triedy, štruktúry a dát; * Údaje o vynechaní ukazovateľa rámca pre prechádzanie natívnym zásobníkom na x86; * Názov a počet riadkov v súbore zdrojového kódu;
.NET PDB obsahuje iba 2 časti informácií: * Názov súboru v zdrojovom kóde a počet riadkov; * a názov lokálnej premennej; * Všetky ostatné údaje sú už zahrnuté v . NET Metadata;
|