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:
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;
|