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.

È stato utile?

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++;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top