Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 27663|Risposta: 0

[Fonte] .net/c# L'eccezione di errore log4net non registra la causa del numero di riga

[Copiato link]
Pubblicato su 03/08/2017 14:13:01 | | | |
Recentemente, un progetto è stato implementato in un ambiente di produzione ed è stato scoperto che alcuni metodi generavano messaggi anomali

Tuttavia, vengono fornite solo informazioni anomale sull'errore e non esiste un numero di riga anomalo, solo che c'è un problema nella conversione del modello in un certo metodo

Ma lascia che li confronti uno per uno, è troppo fastidioso, perché non registrare il numero sbagliato della linea?

La configurazione log4net log è la seguente:

La configurazione del log Log4net in C# viene spiegata in dettaglio
http://www.itsvse.com/thread-2892-1-1.html
(Fonte: Architetto)

Ho scritto deliberatamente un messaggio di eccezione nel metodo Home/Index sul mio computer locale per vedere se il numero della riga sarebbe stato registrato:



Ho scoperto che il file di log errori registra il numero della riga, cosa che sicuramente non è un problema della configurazione log4net, perché la configurazione su entrambi i lati è la stessa

Potrebbe essere un problema della modalità compilation???

Il mio computer locale è in modalità debug e il dll compilato dal server ufficiale è in modalità release

Poi ho cambiato il progetto locale in modalità release e ho scoperto che era ancora un numero di riga di record.

Poi, Baidu, la prima frase:Devi copiare il file .pdb corrispondente al dll

Beh, è un problema? Poi sono andato direttamente nella cartella bin, ho cancellato il file .pdb corrispondente alla DLL, poi ho aggiornato il sito web, trovando il registro delle eccezioni come segue:



Infatti, il numero anomalo della linea non viene registrato!!!!

È davvero un problema .pdb!! Devi conservare il file .pdb in modo che il numero della riga venga registrato se è anomalo!!



A cosa serve un file PDB?


File PDB: Ciò che ogni sviluppatore deve sapere

Cos'è un file PDB?

La maggior parte degli sviluppatori dovrebbe sapere che i file PDB vengono utilizzati per aiutare nel debug del software. Ma come funziona esattamente, forse non lo conosciamo. Questo articolo descrive l'archiviazione e il contenuto dei file PDB. Descrive anche come il debugger trova il file PDB corrispondente a binay e come trova il file di codice sorgente corrispondente a binay. Questo articolo è rivolto a tutti gli sviluppatori Native e Gestiti.

Prima di iniziare, definiamo due termini: build privata, che viene usata per indicare una build generata sulla macchina dello sviluppatore; Build pubblica, che significa una build generata su una macchina pubblica. la build privata è relativamente semplice, perché PDB e binay sono nello stesso posto, e di solito i problemi che abbiamo riguardano la build pubblica.  

La cosa più importante che tutti gli sviluppatori devono sapere è che "i file PDB sono importanti quanto il codice sorgente", senza il quale non puoi nemmeno fare il debug. Per la build pubblica, il server di simboli deve memorizzare tutti i PDB e, quando l'utente segnala un errore, il debugger può trovare automaticamente il file PDB corrispondente in binay, e sia Visual Studio che Windbg sanno come accedere al server di simboli. Prima di memorizzare PDB e binay nel server dei simboli, devi anche indicizzare il sorgente dell'esecuzione PDB, che deve associare PDB e sorgente.  

La parte successiva presuppone che il Symbol Server e l'Indicizzazione del Source Server siano già configurati. TFS2010 può essere fatto semplicemente come indicizzare il sorgente e copiare il server dei simboli per una nuova build.

2. Il contenuto del file PDB

Ufficialmente iniziando il contenuto di PDB, PDB non è un formato di file pubblicamente disponibile, ma Microsoft fornisce un'API per aiutare a ottenere dati da PDB.

Il PDB nativo C++ contiene le seguenti informazioni:
* indirizzi di funzione pubblici, privati e statici;
* Il nome e l'indirizzo della variabile globale;
* Nomi e offset di parametri e variabili locali sullo stack;
* definizioni di tipo di classe, struttura e dati;
* Dati di omissione del puntatore di frame per attraversare lo stack nativo su x86;
* Il nome e il numero di righe nel file del codice sorgente;

Il PDB .NET contiene solo 2 parti di informazione:
* Codice sorgente, nome del file e numero di righe;
* e il nome della variabile locale;
* Tutti gli altri dati sono già inclusi nel . NET Metadata;  





Precedente:Il disco è offline a causa della policy impostata dall'amministratore
Prossimo:Trova un tecnico web per avviare un'attività insieme
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com