Nedávno byl projekt nasazen v produkčním prostředí a bylo zjištěno, že některé metody vyhazují anomální zprávy
Nicméně jsou uvedeny pouze abnormální chybové informace a neexistuje žádné abnormální číslo řádku, pouze že existuje problém s převodem modelu v určité metodě
Ale porovním je jeden po druhém, je to moc otravné, proč si nezapsat špatné číslo řádku?
Log4net logová konfigurace je následující:
Úmyslně jsem napsal zprávu o výjimce v metodě Home/Index na svém lokálním počítači, abych zjistil, jestli se číslo řádku zaznamená:
Zjistil jsem, že soubor error logu zaznamená číslo řádku, což rozhodně není problém u konfigurace log4net, protože konfigurace na obou stranách je stejná
Může to být problém v režimu kompilace???
Můj lokální počítač je v ladicím režimu a dll zkompilované oficiálním serverem je v režimu vydání
Pak jsem změnil lokální projekt na release mode a zjistil jsem, že to stále bylo číslo záznamu.
Pak, Baidu, první věta:Musíte zkopírovat .pdb soubor odpovídající dll”
No, je to problém? Pak jsem šel přímo do adresáře bin, smazal .pdb soubor odpovídající dll, obnovil web a našel záznam výjimek následovně:
A skutečně, abnormální číslo řádku není zaznamenáno!!!!
Je to opravdu problém s .pdb!! Musíte si uchovat .pdb soubor, aby se číslo řádku zaznamenalo, pokud je neobvyklé!!
K čemu slouží soubor PDB?
PDB soubory: Co musí vědět každý vývojář
Co je to PDB soubor?
Většina vývojářů by měla vědět, že soubory PDB se používají k pomoci s laděním softwaru. Ale jak přesně funguje, to možná neznáme. Tento článek popisuje ukládání a obsah souborů PDB. Také popisuje, jak debugger najde PDB soubor odpovídající binay a jak debugger najde zdrojový kód odpovídající binay. Tento článek je určen všem nativním a spravovaným vývojářům.
Než začneme, definujme dva pojmy: soukromá sestava, která označuje sestavení generované na počítači vývojáře; Public build, což znamená build generovaný na public build stroji. Soukromá stavba je relativně jednoduchá, protože PDB a Binay jsou na stejném místě a obvykle máme problémy s veřejnou výstavbou.
Nejdůležitější věc, kterou by všichni vývojáři měli vědět, je, že "PDB soubory jsou stejně důležité jako zdrojový kód", bez kterého ani nemůžete ladit. Pro veřejnou sestavu musí symbol server uložit všechny PDB a když uživatel nahlásí chybu, debugger automaticky najde odpovídající PDB soubor v binay, a jak Visual Studio, tak Windbg vědí, jak se k symbolovému serveru připoutat. Před uložením PDB a binay na symbol server je také potřeba zaindexovat zdrojový kód běhu PDB, což znamená přiřadit PDB a zdroj.
Další část předpokládá, že Symbol Server a Source Server Indexing jsou již nastaveny. TFS2010 lze provést stejně jednoduše jako indexování zdrojů a kopírování symbolového serveru pro novou sestavu.
2. Obsah souboru PDB
Oficiálně začal obsah PDB, PDB není veřejně dostupný formát souboru, ale Microsoft poskytuje API, které pomáhá získávat data z PDB.
Nativní C++ PDB obsahuje následující informace: * veřejné, soukromé a statické funkce adres; * Název a adresa globální proměnné; * Názvy parametrů a lokálních proměnných a posuny na zásobníku; * typové definice třídy, struktury a dat; * Data o vynechání ukazatele snímku pro procházení nativního zásobníku na x86; * Název a počet řádků ve zdrojovém kódu;
.NET PDB obsahuje pouze 2 části informací: * Název souboru a počet řádků ve zdrojovém kódu; * a název lokální proměnné; * Všechna ostatní data jsou již zahrnuta v . NET Metadata;
|