Exemplo n.º 1
0
        public static void CreateMiniDump()
        {
            var proc     = Process.GetCurrentProcess();
            var fileName = String.Format("minidump_{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)) {
                // MINIDUMP_TYPE.MiniDumpWithFullMemory gives more info, but dump file size will be very large
                MiniDumpWriteDump(proc.Handle, (uint)proc.Id, fs.SafeFileHandle.DangerousGetHandle(),
                                  (int)MINIDUMP_TYPE.MiniDumpNormal, ref info, IntPtr.Zero, IntPtr.Zero);
            }
        }
Exemplo n.º 2
0
 private static extern bool MiniDumpWriteDump(IntPtr hProcess, uint ProcessId,
                                              IntPtr hFile, int DumpType, ref MINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
                                              IntPtr UserStreamParam, IntPtr CallbackParam);