Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 27663|Odpowiedź: 0

[Źródło] .net/c# wyjątek błędu log4net nie rejestruje przyczyny numeru linii

[Skopiuj link]
Opublikowano 03.08.2017 14:13:01 | | | |
Niedawno projekt został wdrożony w środowisku produkcyjnym i odkryto, że niektóre metody wyrzucają anomalne komunikaty

Jednak podane są tylko nieprawidłowe informacje o błędzie i nie ma nieprawidłowego numeru linii, jedynie problem z konwersją modelu w określonej metodzie

Ale pozwól, że porównam je jeden po drugim, to zbyt irytujące, czemu nie zapisać złego numeru linii?

Konfiguracja log4net logu wygląda następująco:

Konfiguracja logów C# Log4net jest szczegółowo wyjaśniona
http://www.itsvse.com/thread-2892-1-1.html
(Źródło: Architect)

Celowo napisałem komunikat o wyjątku w metodzie Home/Index na moim lokalnym komputerze, aby sprawdzić, czy numer linii zostanie zapisany:



Zauważyłem, że plik log błędów zapisuje numer linii, co zdecydowanie nie jest problemem w konfiguracji log4net, ponieważ konfiguracja po obu stronach jest taka sama

Czy to może być problem z trybem kompilacji???

Mój komputer jest w trybie debugowania, a dll skompilowany przez oficjalny serwer jest w trybie wydania

Następnie zmieniłem lokalny projekt na tryb release i okazało się, że nadal był to numer linii nagrania.

Następnie, Baidu, pierwsze zdanie:Musisz skopiować plik .pdb odpowiadający dll

No i to problem? Następnie od razu wszedłem do katalogu bin, usunąłem plik .pdb odpowiadający dll, odświeżyłem stronę internetową i znalazłem logowanie wyjątków w następujący sposób:



I rzeczywiście, nieprawidłowy numer linii nie jest rejestrowany!!!!

Czy to naprawdę problem z .pdb!! Musisz zachować plik .pdb, aby numer linii został zapisany, jeśli jest nieprawidłowy!!



Do czego służy plik PDB?


Pliki PDB: Co każdy programista musi wiedzieć

Czym jest plik PDB?

Większość programistów powinna wiedzieć, że pliki PDB są używane do pomocy w debugowaniu oprogramowania. Ale jak dokładnie działa, możemy nie znać. Ten artykuł opisuje przechowywanie i zawartość plików PDB. Opisuje także, jak debugger znajduje plik PDB odpowiadający binay oraz jak znajduje plik kodu źródłowego odpowiadający binay. Ten artykuł jest przeznaczony dla wszystkich deweloperów Natywnych i zarządzanych.

Zanim zaczniemy, zdefiniujmy dwa terminy: prywatną budowlę, która oznacza wersję generowaną na własnej maszynie dewelopera; Public Build, czyli build wygenerowany na maszynie public build. Prywatna budowa jest stosunkowo prosta, ponieważ PDB i Binay są w tym samym miejscu, a zwykle problemy, które mamy, dotyczą budowy publicznej.  

Najważniejszą rzeczą, którą wszyscy deweloperzy powinni wiedzieć, jest to, że "pliki PDB są równie ważne jak kod źródłowy", bez których nie da się nawet debugować. W budowie publicznej serwer symboli musi przechowywać wszystkie PDB, a gdy użytkownik zgłosi błąd, debugger automatycznie znajduje odpowiadający mu plik PDB w binay, a zarówno Visual Studio, jak i Windbg wiedzą, jak uzyskać dostęp do serwera symboli. Przed zapisaniem PDB i binay na serwerze symboli, musisz również zindeksować źródłowy run PDB, czyli powiązać PDB i źródło.  

Następna część zakłada, że Symbol Server i Source Server Indexing są już skonfigurowane. TFS2010 można zrobić tak prosto, jak indeksowanie źródeł i kopiowanie serwera symboli dla nowej konfiguracji.

2. Treść pliku PDB

Oficjalnie rozpoczynając tworzenie treści PDB, PDB nie jest publicznie dostępnym formatem plików, ale Microsoft udostępnia API pomagające pobierać dane z PDB.

Natywny pakiet C++ PDB zawiera następujące informacje:
* publiczne, prywatne i statyczne adresy funkcji;
* Nazwa i adres zmiennej globalnej;
* Nazwy parametrów i zmiennych lokalnych oraz przesunięcia na stosie;
* definicje typów klasy, struktury i danych;
* Dane pominięcia wskaźnika ramki dla przechodzenia przez natywny stos na x86;
* Nazwa i liczba linii w pliku kodu źródłowego;

.NET PDB zawiera tylko 2 części informacji:
* Nazwa pliku kodu źródłowego i liczba linii;
* oraz nazwę zmiennej lokalnej;
* Wszystkie pozostałe dane są już zawarte w . NET Metadata;  





Poprzedni:Dysk jest offline z powodu polityki ustawionej przez administratora
Następny:Znajdź technika od strony internetowej, aby założyć razem firmę
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com