コード例 #1
0
        static void Main(string[] args)
        {
            Dictionary <string, int> moduleCount = new Dictionary <string, int>();
            var files = Directory.GetFiles(@"c:\lbsymbol\").Where(x => x.EndsWith(".dmp"));

            foreach (var f in files)
            {
                using (var parser = new MiniDumpParser())
                {
                    parser.Parse(f);
                    if (parser.ExistModuleListStream())
                    {
                        for (var i = 0; i < parser.ModuleNum; ++i)
                        {
                            var m        = parser.GetStringFromRva(parser.ModuleInfo(i).ModuleNameRva);
                            var filename = Path.GetFileName(m).ToLower();
                            if (moduleCount.ContainsKey(filename))
                            {
                                moduleCount[filename]++;
                            }
                            else
                            {
                                moduleCount[filename] = 1;
                            }
                        }
                    }
                }
            }
            moduleCount
            .OrderByDescending(i => i.Value)
            .Take(30)
            .ToList()
            .ForEach(x => Console.WriteLine(x));
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: sgww/cozy
 static void Main(string[] args)
 {
     using (var parser = new MiniDumpParser())
     {
         if (parser.Parse(@"c:\lbsymbol\2006.dmp"))
         {
             if (parser.ExistModuleListStream())
             {
                 Console.WriteLine(parser.ModuleNum);
                 for (var i = 0; i < 3; ++i)
                 {
                     var moduleName = parser.GetStringFromRva(parser.ModuleInfo(i).ModuleNameRva);
                     Console.WriteLine(moduleName);
                 }
             }
             if (parser.ExistThreadListStream())
             {
                 Console.WriteLine(parser.ThreadNum);
                 for (var i = 0; i < 3; ++i)
                 {
                     Console.WriteLine(parser.ThreadInfo(i).ThreadId);
                 }
             }
             if (parser.ExistMemoryListStream())
             {
                 Console.WriteLine(parser.MemoryRangeNum);
                 for (var i = 0; i < 3; ++i)
                 {
                     Console.WriteLine(parser.MemoryRange(i).StartOfMemoryRange);
                 }
             }
             if (parser.ExistExceptionStream())
             {
                 var    errorCode    = parser.ExceptionStream().ExceptionRecord.ExceptionCode;
                 string errorMessage = new Win32Exception((int)errorCode).Message;
                 Console.WriteLine(errorMessage);
             }
             if (parser.ExistSystemInfoStream())
             {
                 var si = parser.SystemInfo();
                 Console.WriteLine("ostarget = {0}.{1}.{2}", si.MajorVersion, si.MinorVersion, si.BuildNumber);
             }
         }
     }
 }