Beispiel #1
0
        /// <summary>
        /// Дамп записывается в файл с уникальным названием (FileName), который будет храниться в той же директории, что и exe файл. 
        /// Перед тем как вызвать MiniDumpWriteDump, инициализируем структуру типа MINIDUMP_EXCEPTION_INFORMATION.
        /// </summary>
        private static void CreateMiniDump()
        {
            using (System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess())
            {
                string FileName = string.Format(@"CRASH_DUMP_{0}_{1}.dmp", DateTime.Today.ToShortDateString(), DateTime.Now.Ticks);

                MINIDUMP_EXCEPTION_INFORMATION Mdinfo = new MINIDUMP_EXCEPTION_INFORMATION();

                Mdinfo.ThreadId = GetCurrentThreadId();
                Mdinfo.ExceptionPointers = Marshal.GetExceptionPointers();
                Mdinfo.ClientPointers = 1;

                using (FileStream fs = new FileStream(FileName, FileMode.Create))
                {

                    {
                        MiniDumpWriteDump(
                            process.Handle, 
                            (uint)process.Id, 
                            fs.SafeFileHandle.DangerousGetHandle(), 
                            (Int32)MINIDUMP_TYPE.MiniDumpNormal,
                            ref Mdinfo,
                            IntPtr.Zero,
                            IntPtr.Zero);
                    }
                }
            }
        }
Beispiel #2
0
 static extern bool MiniDumpWriteDump(
     IntPtr hProcess, 
     uint ProcessId, 
     IntPtr hFile, 
     int DumpType, 
     ref MINIDUMP_EXCEPTION_INFORMATION ExceptionParam, 
     IntPtr UserStreamParam, 
     IntPtr CallbackParam);