示例#1
0
        public async Task CreatePageLinksMap(FileInfo file, DUMP_TYPE type)
        {
            // Create map file with page links
            Dictionary <string, HashSet <string> > pageToPageLinkIndex = new Dictionary <string, HashSet <string> >();

            using (StreamReader sr = new StreamReader(file.FullName)) {
                while (sr.Peek() >= 0)
                {
                    var line = await sr.ReadLineAsync();

                    if (!line.StartsWith("INSERT INTO") || line.Split(' ').Length != 5)
                    {
                        continue;
                    }
                    string[] separatingStrings = { "),(" };
                    var      inserts           = string.Join("", line.Split(' ').Skip(4));
                    var      values            = inserts.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
                    string   to_page_id;
                    foreach (string value in values)
                    {
                        var data          = value.Split(',');
                        var from_page_id  = new String(data[0].Where(Char.IsDigit).ToArray());
                        var to_page_title = data[2].Trim('\'');
                        if (data[1] == "0" && data[3] == "0")
                        {
                            pageTitles.TryGetValue(to_page_title, out to_page_id);
                            if (to_page_id != null && pageIDs.ContainsKey(from_page_id))
                            {
                                if (!pageToPageLinkIndex.ContainsKey(from_page_id))
                                {
                                    pageToPageLinkIndex[from_page_id] = new HashSet <string>();
                                }
                                pageToPageLinkIndex[from_page_id].Add(to_page_id);
                            }
                        }
                    }
                }
            }
            using (StreamWriter sw = new StreamWriter(file.FullName.Substring(0, file.FullName.Length - 4) + ".map")) {
                foreach (KeyValuePair <string, HashSet <string> > from_page in pageToPageLinkIndex)
                {
                    await sw.WriteLineAsync(from_page.Key + "\t" + string.Join(",", from_page.Value));
                }
            }
            window.UpdateProgress(3, 1, "Processed " + (++filesCreated) + " out of " + numberOfFiles + " files");
        }
示例#2
0
        //------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Дамп записывается в файл с уникальным названием (FileName),
        /// который будет храниться в той же директории, что и exe файл.
        /// Перед тем как вызвать MiniDumpWriteDump, инициализируем структуру
        /// типа MINIDUMP_EXCEPTION_INFORMATION.
        /// </summary>
        /// <param name="pathToDirectory">Путь к директории сохранения дампа</param>
        /// <param name="fileName">Возвращает имя созданого файла дампа</param>
        public static void CreateMiniDump(
            String pathToDirectory,
            DUMP_TYPE typeOfDump, out String fileName)
        {
            using (System.Diagnostics.Process process =
                       System.Diagnostics.Process.GetCurrentProcess())
            {
                fileName = String.Format(@"CRASH_DUMP_{0}_{1}.dmp",
                                         DateTime.Today.ToShortDateString(), DateTime.Now.Ticks);

                String pathToDump = pathToDirectory + @"\" + fileName;

                MINIDUMP_EXCEPTION_INFORMATION Mdinfo = new MINIDUMP_EXCEPTION_INFORMATION();

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

                using (FileStream fs = new FileStream(pathToDump, FileMode.Create))
                {
                    switch (typeOfDump)
                    {
                    case DUMP_TYPE.MiniDumpFilterMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpFilterModulePaths:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpFilterTriage:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpIgnoreInaccessibleMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpNormal:
                    {
                        MiniDumpWriteDump(
                            process.Handle,
                            (uint)process.Id,
                            fs.SafeFileHandle.DangerousGetHandle(),
                            (Int32)DUMP_TYPE.MiniDumpNormal,
                            ref Mdinfo,
                            IntPtr.Zero,
                            IntPtr.Zero);
                        break;
                    }

                    case DUMP_TYPE.MiniDumpScanMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpValidTypeFlags:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithCodeSegs:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithDataSegs:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithFullAuxiliaryState:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithFullMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithFullMemoryInfo:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithHandleData:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithIndirectlyReferencedMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithModuleHeaders:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithoutAuxiliaryState:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithoutOptionalData:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithPrivateReadWriteMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithPrivateWriteCopyMemory:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithProcessThreadData:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithThreadInfo:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithTokenInformation:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    case DUMP_TYPE.MiniDumpWithUnloadedModules:
                    {
                        throw new NotImplementedException();
                        //break;
                    }

                    default:
                    { break; }
                    }
                }
            }
        }
示例#3
0
        //------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Дамп записывается в файл с уникальным названием (FileName), 
        /// который будет храниться в той же директории, что и exe файл. 
        /// Перед тем как вызвать MiniDumpWriteDump, инициализируем структуру 
        /// типа MINIDUMP_EXCEPTION_INFORMATION.
        /// </summary>
        /// <param name="pathToDirectory">Путь к директории сохранения дампа</param>
        /// <param name="fileName">Возвращает имя созданого файла дампа</param>
        public static void CreateMiniDump(
            String pathToDirectory, 
            DUMP_TYPE typeOfDump, out String fileName)
        {
            using (System.Diagnostics.Process process = 
                System.Diagnostics.Process.GetCurrentProcess())
            {
                fileName = String.Format(@"CRASH_DUMP_{0}_{1}.dmp", 
                    DateTime.Today.ToShortDateString(), DateTime.Now.Ticks);

                String pathToDump = pathToDirectory + @"\" + fileName;

                MINIDUMP_EXCEPTION_INFORMATION Mdinfo = new MINIDUMP_EXCEPTION_INFORMATION();

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

                using (FileStream fs = new FileStream(pathToDump, FileMode.Create))
                {
                    switch (typeOfDump)
                    {
                        case DUMP_TYPE.MiniDumpFilterMemory:
                            {
                                throw new NotImplementedException();
                                //break; 
                            }
                        case DUMP_TYPE.MiniDumpFilterModulePaths:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpFilterTriage:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpIgnoreInaccessibleMemory:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpNormal:
                            {
                                MiniDumpWriteDump(
                                    process.Handle,
                                    (uint)process.Id,
                                    fs.SafeFileHandle.DangerousGetHandle(),
                                    (Int32)DUMP_TYPE.MiniDumpNormal,
                                    ref Mdinfo,
                                    IntPtr.Zero,
                                    IntPtr.Zero);
                                break; 
                            }
                        case DUMP_TYPE.MiniDumpScanMemory:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpValidTypeFlags:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithCodeSegs:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithDataSegs:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithFullAuxiliaryState:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithFullMemory:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithFullMemoryInfo:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithHandleData:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithIndirectlyReferencedMemory:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithModuleHeaders:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithoutAuxiliaryState:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithoutOptionalData:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithPrivateReadWriteMemory:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithPrivateWriteCopyMemory:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithProcessThreadData:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithThreadInfo:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithTokenInformation:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        case DUMP_TYPE.MiniDumpWithUnloadedModules:
                            {
                                throw new NotImplementedException();
                                //break;
                            }
                        default:
                            { break; }
                    }                    
                }
            }
        }