private static void PopulateStackTrace(this Error error, Error root, Exception exception, IExceptionlessLog log) { StackFrame[] frames = null; try { var st = new StackTrace(exception, true); frames = st.GetFrames(); } catch {} if (frames == null) { return; } foreach (StackFrame frame in frames) { var stackFrame = new Models.Data.StackFrame { LineNumber = frame.GetFileLineNumber(), Column = frame.GetFileColumnNumber(), FileName = frame.GetFileName() }; try { stackFrame.Data["ILOffset"] = frame.GetILOffset(); #if NET45 stackFrame.Data["NativeOffset"] = frame.GetNativeOffset(); #endif } catch (Exception ex) { log.Error(typeof(ExceptionlessClient), ex, "Error populating StackFrame offset info: " + ex.Message); } try { stackFrame.PopulateMethod(root, frame.GetMethod()); } catch (Exception ex) { log.Error(typeof(ExceptionlessClient), ex, "Error populating StackFrame method info: " + ex.Message); } error.StackTrace.Add(stackFrame); } }
private static void PopulateStackTrace(this Error error, Error root, Exception exception, IExceptionlessLog log) { StackFrame[] frames = null; try { var st = new StackTrace(exception, true); frames = st.GetFrames(); } catch {} if (frames == null) return; foreach (StackFrame frame in frames) { var stackFrame = new Models.Data.StackFrame { LineNumber = frame.GetFileLineNumber(), Column = frame.GetFileColumnNumber(), FileName = frame.GetFileName() }; try { stackFrame.Data["ILOffset"] = frame.GetILOffset(); stackFrame.Data["NativeOffset"] = frame.GetNativeOffset(); } catch (Exception ex) { log.Error(typeof(ExceptionlessClient), ex, "Error populating StackFrame offset info: " + ex.Message); } try { stackFrame.PopulateMethod(root, frame.GetMethod()); } catch (Exception ex) { log.Error(typeof(ExceptionlessClient), ex, "Error populating StackFrame method info: " + ex.Message); } error.StackTrace.Add(stackFrame); } }