// Token: 0x06000138 RID: 312 RVA: 0x00005888 File Offset: 0x00003A88 private Client.ExceptionInfo GetExceptionInfo(Backtrace backTrace, EvaluationOptions options = null, bool isUnhandled = false) { Client.ExceptionInfo exceptionInfo = null; if (backTrace != null && backTrace.FrameCount > 0) { for (int i = 0; i < backTrace.FrameCount; i++) { Mono.Debugging.Client.StackFrame frame = backTrace.GetFrame(i); if (isUnhandled || !frame.IsExternalCode) { try { exceptionInfo = ((options == null) ? frame.GetException() : frame.GetException(options)); } catch (AbsentInformationException) { goto IL_4A; } if (exceptionInfo != null) { this.ResolveFullException(exceptionInfo); break; } } IL_4A :; } } return(exceptionInfo); }
// Token: 0x06000134 RID: 308 RVA: 0x00005795 File Offset: 0x00003995 private static string GetUnhandledExceptionMessage(Client.ExceptionInfo ex) { if (ex != null) { return(string.Format("Unhandled Exception:\n\n{0}: {1}", ex.Type, ExceptionsAdapter.ReplaceMessage(ex))); } return("An unhandled exception occured."); }
// Token: 0x06000135 RID: 309 RVA: 0x000057B6 File Offset: 0x000039B6 private static string ReplaceMessage(Client.ExceptionInfo ex) { if (!(ex.Message == "Loading...")) { return(ex.Message); } return("<Timeout exceeded getting exception details>"); }
// Token: 0x06000139 RID: 313 RVA: 0x00005900 File Offset: 0x00003B00 private void ResolveFullException(Client.ExceptionInfo exception) { int num = 0; if (exception.Instance != null) { while (num++ < 4 && (exception.IsEvaluating || exception.StackIsEvaluating)) { exception.Instance.WaitHandle.WaitOne(2000); } } }
private static IEnumerable <Domain.Error.ExceptionInfo> GetErrorInfo(Client.ExceptionInfo clientExceptionInfo) { var exceptionInfo = new Domain.Error.ExceptionInfo { StackTrace = clientExceptionInfo.StackTrace, Message = clientExceptionInfo.Message, Type = clientExceptionInfo.ExceptionType, ExtraData = clientExceptionInfo.Data == null ? null : clientExceptionInfo.Data.ToDictionary(kvp => kvp.Key, kvp => kvp.Value), Module = clientExceptionInfo.Source, MethodName = clientExceptionInfo.MethodName }; yield return(exceptionInfo); if (clientExceptionInfo.InnerExceptionInfo != null) { foreach (var innerExceptionInfo in GetErrorInfo(clientExceptionInfo.InnerExceptionInfo)) { yield return(innerExceptionInfo); } } }