/// <summary> /// 创建一个MiniDump文件,用以调试分析 /// </summary> public static void CreateMiniDump() { var proc = Process.GetCurrentProcess(); var fileName = String.Format("FKMinidump_{0}_{1}.dmp", proc.ProcessName, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")); var info = new MINIDUMP_EXCEPTION_INFORMATION() { ThreadId = GetCurrentThreadId(), ExceptionPointers = Marshal.GetExceptionPointers(), ClientPointers = 1 }; using (var fs = new FileStream(fileName, FileMode.Create)) { MiniDumpWriteDump(proc.Handle, (uint)proc.Id, fs.SafeFileHandle.DangerousGetHandle(), (int)MINIDUMP_TYPE.MiniDumpWithFullMemory, ref info, IntPtr.Zero, IntPtr.Zero); } // Process.GetCurrentProcess().Kill(); }
private static extern bool MiniDumpWriteDump(IntPtr hProcess, uint ProcessId, IntPtr hFile, int DumpType, ref MINIDUMP_EXCEPTION_INFORMATION ExceptionParam, IntPtr UserStreamParam, IntPtr CallbackParam);