2009-09-14 13 views
7

A volte riceviamo tracce dello stack dal nostro cliente con numeri di riga errati. Succede non così spesso, ma a volte ci imbarazza.Numeri di riga errati nella traccia dello stack (release)

I clienti hanno assemblee di rilascio con ottimizzazioni e con "PDB solo" informazioni di debug.

E sì, confrontiamo i numeri di riga con esattamente la stessa versione del codice il cliente ha.

E sì, il cliente ha i file pdb corretti.

E no, questa differenza di numeri di linea non può essere spiegata con il metodo inline (ottimizzazione del compilatore).

E no, non utilizziamo strumenti AOP, come PostSharp.

Qualche idea perché succede?

+0

Stai forse usando PostSharp o uno strumento AOP simile? –

+1

Vedere se questo aiuto o è duplicato: http://stackoverflow.com/questions/492201/exception-error-message-with-incorrect-line-number – Kobi

risposta

7

Non un esperto .net, ma almeno in altre lingue, quando vengono scelti ottimizzazioni del compilatore alti, il compilatore può rendere significativo riordino del codice. Questo può e spesso rende molto difficile attribuire la fonte di un errore a una linea specifica. Se il compilatore è in grado di eseguire ottimizzazioni su blocchi di base, questo effetto può essere molto significativo, posizionando la posizione apparente della linea in una parte completamente diversa del file sorgente.

2

Se si utilizza un sacco di ottimizzazione compil, il compilatore potrebbe spostare parti del codice credo.

Il modo migliore per eseguire il debug, è quello di utilizzare riflettore sul dll che il client effettivamente utilizzare. Usando i numeri di riga dello stacktrace, troverai esattamente quali linee di codice vengono chiamate quando l'app si arresta in modo anomalo.

+1

Come Reflector può aiutarmi? Non mostra i numeri di riga e non conserva ovviamente la formattazione. E Reflector mostra che il codice non è stato modificato in modo significativo nel luogo in cui si è verificata un'eccezione. – xoposhiy

+1

Oh ... Quindi sei fottuto credo. Scusate :/ –

Problemi correlati