/// <summary> /// Deal with sending the error to the error reporting service and saving the dump to the harddrive if needed /// </summary> /// <param name = "msg"></param> /// <param name = "ex"></param> public static void handleException(string msg, Exception ex) { if (m_saveCrashDumps) { // Log exception to disk try { if (!Directory.Exists(m_crashDir)) { Directory.CreateDirectory(m_crashDir); } string log = Path.Combine(m_crashDir, Util.GetUniqueFilename("crashDump" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year + ".mdmp")); using (FileStream fs = new FileStream(log, FileMode.Create, FileAccess.ReadWrite, FileShare.Write)) { MiniDump.Write(fs.SafeFileHandle, MiniDump.Option.WithThreadInfo | MiniDump.Option.WithProcessThreadData | MiniDump.Option.WithUnloadedModules | MiniDump.Option.WithHandleData | MiniDump.Option.WithDataSegs | MiniDump.Option.WithCodeSegs, MiniDump.ExceptionInfo.Present); } } catch (Exception e2) { MainConsole.Instance.ErrorFormat("[CRASH LOGGER CRASHED]: {0}", e2); } } if (m_sendErrorReport) { Hashtable param = new Hashtable { { "Version", VersionInfo.Version }, { "Message", msg }, { "Platform", Environment.OSVersion.Platform.ToString() } }; IList parameters = new ArrayList(); parameters.Add(param); ConfigurableKeepAliveXmlRpcRequest req = new ConfigurableKeepAliveXmlRpcRequest("SendErrorReport", parameters, true); try { req.Send(m_urlToPostErrors, 10000); } catch { } } }
/// <summary> /// Deal with sending the error to the error reporting service and saving the dump to the harddrive if needed /// </summary> /// <param name="msg"></param> /// <param name="ex"></param> public static void handleException(string msg, Exception ex) { if (m_saveCrashDumps) { // Log exception to disk try { if (!Directory.Exists(m_crashDir)) { Directory.CreateDirectory(m_crashDir); } string log = Path.Combine(m_crashDir, Util.GetUniqueFilename("crashDump" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year + ".mdmp")); using (FileStream fs = new FileStream(log, FileMode.Create, FileAccess.ReadWrite, FileShare.Write)) { MiniDump.Write(fs.SafeFileHandle, MiniDump.Option.WithThreadInfo | MiniDump.Option.WithProcessThreadData | MiniDump.Option.WithUnloadedModules | MiniDump.Option.WithHandleData | MiniDump.Option.WithDataSegs | MiniDump.Option.WithCodeSegs, MiniDump.ExceptionInfo.Present); } } catch (Exception e2) { m_log.ErrorFormat("[CRASH LOGGER CRASHED]: {0}", e2); } } if (m_sendErrorReport) { List <string> parameters = new List <string>(); parameters.Add(VersionInfo.Version); //Aurora version parameters.Add(msg); //The error parameters.Add(Environment.OSVersion.Platform.ToString()); //The operating system ConfigurableKeepAliveXmlRpcRequest req; req = new ConfigurableKeepAliveXmlRpcRequest("SendErrorReport", parameters, true); try { req.Send(m_urlToPostErrors, 10000); } catch { } } }