Visualizza il numero di righe in Stack Trace per .NET assembly in modalità Release
-
06-07-2019 - |
Domanda
Esiste un modo per visualizzare le righe nella traccia dello stack per la build / distribuzione dell'assembly .NET in modalità di rilascio?
AGGIORNAMENTO:
La mia applicazione è divisa in tre progetti di libreria di classi e un sito Web ASP.NET "quot". progetto. L'errore che sto cercando di rintracciare è in uno dei tre progetti di biblioteca di classe. Ho distribuito solo il file pdb per il progetto della libreria di classi che sta generando il riferimento "Oggetto" non impostato su un'istanza di un oggetto " di errore.
I numeri di riga non vengono ancora visualizzati nella traccia dello stack. Devo distribuire i file pdb per tutti i progetti per ottenere i numeri di riga nella traccia dello stack?
Soluzione funzionante
La distribuzione del file pdb per ogni applicazione ha risolto il problema relativo al numero di riga.
Soluzione
- Accedere alla finestra Proprietà per il progetto in cui si desidera visualizzare i numeri delle righe di traccia dello stack.
- Fai clic sulla scheda Costruisci " verticale " ;.
- Seleziona " Rilascia " configurazione.
Controlla il parametro della costante DEBUG. - Deseleziona il " Ottimizza codice " parametro per evitare il problema di traccia occasionale con codice incorporato (questo passaggio non è essenziale).
- Premi il pulsante Avanzate ... e scegli Output - > Informazioni di debug - > PDB-only.
- Distribuisce il file .pdb generato con l'assembly.
Implementato con il commento seguente:
- Un'altra cosa da verificare è nel " Pacchetto / Pubblica Web " sezione in cui " Escludi i simboli di debug generati " la casella di controllo è anche deselezionata
Altri suggerimenti
In VS2012 devi deselezionare " Escludi simboli di debug generati " anche nella sezione Pacchetto / Pubblica Web delle proprietà.
La mia soluzione
Copia il file pdb nella stessa cartella del file eseguibile.
ora posso visualizzare il numero di riga quando eseguo il file exe.
questa è la ragione
http://msdn.microsoft. com / it-it / library / ee416588% 28v = vs.85% 29.aspx
In passato ho riscontrato problemi in cui sento la necessità di distribuire file PDB con una versione di rilascio per rintracciare un errore. Il motivo è, come hai detto, che l'eccezione si è verificata in un metodo molto ampio e non sono riuscito a individuare con precisione dove stava accadendo.
Ciò potrebbe indicare che il metodo deve essere sottoposto a refactoring in metodi più piccoli e più granulari. Non è una sola misura adatta a tutte le risposte, ma questo approccio mi è servito bene a breve termine (ho spesso trovato il bug durante il refactoring) e nel lungo periodo.
Solo un pensiero.
Includi simboli di debug nel tuo pacchetto build / deploy.
In VS 2008 Express l'ho trovato in Proprietà progetto - > Compila - > Opzioni di compilazione avanzate.
Funziona sempre. Devi solo eseguire la sottostringa del messaggio di traccia dello stack. Facile! Inoltre, in vb.net devi fare " Mostra tutti i file " e includi il pdb.
'Err is the exception passed to this function
Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5)
Dim i As Integer = 0
While i < lineGrab.Length
If (IsNumeric(lineGrab(i))) Then
lineNo.Append(lineGrab(i))
End If
i += 1
End While
'LineNo holds the number as a string
Versione C #:
string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5);
int i = 0;
int value;
while (i < lineGrab.Length)
{
if (int.TryParse(lineGrab[i].ToString(), out value))
{
strLineNo.Append(lineGrab[i]);
}
i++;
}