高CPU调试(一)

来源:互联网 发布:网络销售技巧和话术 编辑:程序博客网 时间:2024/04/29 21:06
        static void Main(string[] args)        {            Console.Clear();            Console.WriteLine("到命令行下,切换到windbg目录,执行adplus -hang -pn highcpu.exe -o c:\\dumps");            Console.WriteLine("如果要停止,按Ctrl+C结束程序");            Console.WriteLine("====================================================");                        while (true)            {                Console.SetCursorPosition(0, 3);                Console.Write(DateTime.Now.Ticks.ToString());            }            Console.ReadKey();        }

dmp:

第一个Dump:0:000> .load clr20\sos.dll0:000> !runaway User Mode Time  Thread       Time   0:334       0 days 0:00:00.468   3:dc8       0 days 0:00:00.000   2:14d0      0 days 0:00:00.000   1:750       0 days 0:00:00.000第二个Dump:0:000> .load clr20\sos.dll0:000> !runaway User Mode Time  Thread       Time   0:334       0 days 0:00:08.221   3:dc8       0 days 0:00:00.000   2:14d0      0 days 0:00:00.000   1:750       0 days 0:00:00.000第三个Dump:0:000> .load clr20\sos.dll0:000> !runaway User Mode Time  Thread       Time   0:334       0 days 0:00:11.559   3:dc8       0 days 0:00:00.000   2:14d0      0 days 0:00:00.000   1:750       0 days 0:00:00.000
从上面的输出可以看到,线程0的CPU时间不断增加,CPU高占用很可能是由于线程0正在执行的代码有问题造成的。

  可以用!clrstack命令查看一下当前的调用堆栈以及其上的局部变量和值。

  当执行!clrstack时,报出了如下提示:

0:000> !clrstackFailed to find runtime DLL (mscorwks.dll), 0x80004005Extension commands need mscorwks.dll in order to have something to do.

这不是我想要的,加载mscorwks失败。后来经过调试发现,原来是第一步就.load时就错了,因为我的那段代码用的是vs2010。所以应该加载.net frameword 4.0。

  所以,最初应该执行的.load C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/sos.dll

  然后在执行!clrstack

  第三个Dump

0:000> !clrstack*** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - PDB symbol for clr.dll not loadedOS Thread Id: 0x334 (0)Child SP       IP Call Site001cf2b8 779e70f4 [InlinedCallFrame: 001cf2b8] 001cf2b4 6a14672e *** WARNING: Unable to verify checksum for mscorlib.ni.dllDomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, COORD)001cf2b8 6a1b6cfd [InlinedCallFrame: 001cf2b8] Microsoft.Win32.Win32Native.SetConsoleCursorPosition(IntPtr, COORD)001cf2ec 6a1b6cfd System.Console.SetCursorPosition(Int32, Int32)001cf324 005500bb *** WARNING: Unable to verify checksum for ConsoleApplication3.exeConsoleApplication3.Program.Main(System.String[]) [C:\Users\ChenZhuo\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs @ 22]001cf4dc 70a33e22 [GCFrame: 001cf4dc] 
第二个Dump
0:000> !clrstack*** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - PDB symbol for clr.dll not loadedOS Thread Id: 0x334 (0)Child SP       IP Call Site001cf2b8 779e70f4 [InlinedCallFrame: 001cf2b8] 001cf2b4 6a14672e *** WARNING: Unable to verify checksum for mscorlib.ni.dllDomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, COORD)001cf2b8 6a1b6cfd [InlinedCallFrame: 001cf2b8] Microsoft.Win32.Win32Native.SetConsoleCursorPosition(IntPtr, COORD)001cf2ec 6a1b6cfd System.Console.SetCursorPosition(Int32, Int32)001cf324 005500bb *** WARNING: Unable to verify checksum for ConsoleApplication3.exeConsoleApplication3.Program.Main(System.String[]) [C:\Users\ChenZhuo\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs @ 22]001cf4dc 70a33e22 [GCFrame: 001cf4dc] 
第一个Dump:

0:000> !clrstack*** ERROR: Symbol file could not be found.  Defaulted to export symbols for clr.dll - PDB symbol for clr.dll not loadedOS Thread Id: 0x334 (0)Child SP       IP Call Site001cf2b8 779e70f4 [InlinedCallFrame: 001cf2b8] 001cf2b4 6a14672e *** WARNING: Unable to verify checksum for mscorlib.ni.dllDomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, COORD)001cf2b8 6a1b6cfd [InlinedCallFrame: 001cf2b8] Microsoft.Win32.Win32Native.SetConsoleCursorPosition(IntPtr, COORD)001cf2ec 6a1b6cfd System.Console.SetCursorPosition(Int32, Int32)001cf324 005500bb *** WARNING: Unable to verify checksum for ConsoleApplication3.exeConsoleApplication3.Program.Main(System.String[]) [C:\Users\ChenZhuo\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs @ 22]001cf4dc 70a33e22 [GCFrame: 001cf4dc] 
出问题的代码已可以看得到,就在Main方法里。


0 0
原创粉丝点击