Perché IntelliTrace non mostra il codice?
-
17-09-2020 - |
Domanda
Sto debugando un'applicazione in un taggio di azzurro usando IntelliTrace. A volte posso vedere il codice che ha originato un'eccezione ma a volte non posso. E le eccezioni che il rispettivo codice non riesco a vedere sono sempre lo stesso.
C'è qualche motivo per cui continuo a ricevere lo stesso messaggio (nessuna fonte disponibile) nella nuova scheda quando faccio doppio clic sull'eccezione per avviare il debug?
So già che cosa è l'eccezione che devo fare per risolverlo, ma ho anche bisogno di sapere dove trovare il codice! Aiuto.
Esempio
@Slaks
Un esempio delle eccezioni che ottengo è questa:
"The condition specified using HTTP conditional header(s) is not met."
.
Stack di chiamata:
[External Code]
System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken = {unknown})
[External Code]
System.dll!System.Net.ContextAwareResult.Complete(System.IntPtr userToken = {unknown})
System.dll!System.Net.HttpWebRequest.ProcessResponse()
System.dll!System.Net.HttpWebRequest.SetResponse(System.Net.CoreResponseData coreResponseData = {unknown})
System.dll!System.Net.ConnectionReturnResult.SetResponses(System.Net.ConnectionReturnResult returnResult = {unknown})
System.dll!System.Net.Connection.ReadComplete(int bytesRead = {unknown}, System.Net.WebExceptionStatus errorStatus = {unknown})
System.dll!System.Net.Connection.ReadCallback(System.IAsyncResult asyncResult = {unknown})
System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken = {unknown})
System.dll!System.Net.Security._SslStream.ProcessFrameBody(int readBytes = {unknown}, byte[] buffer = {unknown}, int offset = {unknown}, int count = {unknown}, System.Net.AsyncProtocolRequest asyncRequest = {unknown})
System.dll!System.Net.Security._SslStream.ReadFrameCallback(System.Net.AsyncProtocolRequest asyncRequest = {unknown})
System.dll!System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(int bytes = {unknown})
System.dll!System.Net.FixedSizeReader.ReadCallback(System.IAsyncResult transportResult = {unknown})
System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken = {unknown})
[External Code]
System.dll!System.Net.ContextAwareResult.Complete(System.IntPtr userToken = {unknown})
System.dll!System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(uint errorCode = {unknown}, uint numBytes = {unknown}, System.Threading.NativeOverlapped* nativeOverlapped = {unknown})
[External Code]
.
Modifica:
Le eccezioni sono effettivamente causate da me. Ecco un esempio:
AzureBrightWebRole.dll!AzureBright.Common.EasyPay.EasyPay.CheckFinishedPayments()
AzureBrightWorkerRole.dll!AzureBrightWorkerRole.WorkerRole.Run()
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal()
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRole()
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.AnonymousMethod()
[External Code]
.
Un servizio web a cui stavo accedendo sembrava aver smesso di funzionare. Alla fine, ho scoperto, non aveva nulla a che fare con questo! Ho riprodotto l'errore localmente e stava accadendo proprio nel mio codice. Perché non riesco a vedere il codice in cui è successo l'errore e in quali condizioni? Anche se non posso essere sicuro, non ricordo che il codice è stato cambiato ed è stato fatto oggi.
Soluzione
IntelliTrace mostrerà solo il codice sorgente quando c'è qualche codice da mostrare.
Tutto il codice nella traccia dello stack che hai pubblicato è all'interno del .NET Framework, quindi non esiste un codice sorgente per mostrarti.
Puoi probabilmente ottenere il codice sorgente qui da .NET FORMAFORWORD Fonte di riferimento .
Questa eccezione, e molti simili, sono interne a ASP.NET e dovrebbero essere ignorate.