Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
.NETÓ¦ÓóÌÐòµ÷ÊÔ¡ªÔ­Àí¡¢¹¤¾ß¡¢·½·¨
 
À´Ô´£ºÀ´×ÔÍøÂç ·¢²¼ÓÚ£º 2017-6-19
  3168  次浏览      29
 

1.±³¾°½éÉÜ

Ëæ×ÅÓ¦ÓóÌÐòµÄ¸´ÔӶȲ»¶ÏÉÏÉý£¬ÒªÏ뽫ºÃµÄÉè¼ÆË¼ÏëÎȶ¨µÄÂäʵµ½ÏßÉÏ£¬ÎÒÃÇÐèÒª¾ß±¸½â¾öÎÊÌâµÄÄÜÁ¦¡£ÐèÒª¾ß±¸¶ÔÔËÐÐʱµÄ´íÎó½øÐж¨Î»ÇÒ¿ìËٵĽâ¾öËüµÄÄÜÁ¦¡£±¾ÆªÎÄÕÂÎÒ½«·ÖÏíÒ»ÏÂÎÒ¶Ô.NETÓ¦ÓóÌÐòµ÷ÊÔ·½ÃæµÄѧϰºÍʹÓÃ×ܽᡣ

Æäʵ¶Ôµ÷ÊÔ³ÌÐòµÄʹÓÃÊDz»Äѵģ¬¹Ø¼üÊÇÖªµÀËüµÄµ÷ÊÔÔ­Àí²ÅÐУ¬ÒòΪµ÷ÊÔÒ»¸ö³ÌÐò»òÕßdumpÎļþ£¬¶¼ÐèÒªÁ˽âÒ»¶¨µÄ.NETµ÷ÊÔµÄÔ­Àí²ÅÐУ¬±ÈÈçÄãÔÚ¸½¼Óµ½½ø³Ìµ÷ÊÔʱÔÚÖ´ÐÐij¸öSOSÀ©Õ¹ÃüÁîÊÇÐèÒªÇл»µ½Ö¸¶¨Ïß³ÌÉϵ쬶øµ÷ÊÔdumpÎļþ¾Í²»ÐèÒª£¬µ«ÊǶÔDumpÎļþµÄ·ÖÎöÓÐЩSOSÀ©Õ¹ÃüÁîÊDz»ÄÜÓõģ¬ÀàËÆÕâÑùµÄÎÊÌ⣬һµ©³öÏÖÄã¾ÍһͷÎíË®£¬ËùÒÔ»¨µãʱ¼äѧϰһÏÂÔ­ÀíÊÇÓбØÒªµÄ¡£

2.»ù±¾Ô­Àí£¨Windowsµ÷ÊÔ¹¤¾ßÏä¡¢.NETµ÷ÊÔÀ©Õ¹SOS.DLL¡¢SOSEX.DLL£©

ÔÚWindowsƽ̨Éϵ÷ÊÔÓ¦ÓóÌÐòÊ×Ñ¡Windowsµ÷ÊÔ¹¤¾ßÏ䣬¸Ã¹¤¾ßÏä°üº¬ÁËÒ»Ì×רÃÅÓÃÀ´Õë¶ÔWindows½øÐкܶิÔÓ³¡¾°µ÷ÊÔËùÐèÒªµÄ¹¤¾ßºÍ×é¼þ¡£ÐèҪעÒâµÄÊǴ˹¤¾ßÏäÊÇÕë¶ÔÓÚ·ÇÍйÜ.NETƽ̨Óõģ¬Òâ˼¾ÍÊÇ˵´Ë¹¤¾ßÏäµÄËùÓй¤¾ßºÍ×é¼þĬÈÏÊDz»Äܹ»½øÐÐ.NETÓ¦ÓóÌÐòµ÷ÊԵģ¬Ö»ÄÜÓÃÀ´¶ÔÔ­ÉúWindows³ÌÐò½øÐе÷ÊÔ¡£

ÄÇô.NETƽ̨Ҳ²¢²»ÊÇÓÐ×Ô¼ºÒ»Ì×רÓõĵ÷ÊÔ¹¤¾ßÏ䣬±Ï¾¹.NET»¹ÊÇÊôÓÚWindowsƽ̨µÄ£¬ËùÒԺܴ󲿷ֵÄÔËÐÐʱԭÀí»¹ÊÇ»ùÓÚWindowsµÄ£¬ÒªÏëÔÚÔ­ÉúµÄµ÷ÊÔÆ÷ÖжÔ.NETÕâ¸ö¾ßÓÐÐéÄâÔËÐÐʱ³ÌÐò½øÐе÷ÊÔ¾ÍÐèҪרÃŵķ­ÒëÆ÷²ÅÄܹ»Ö´ÐС£SOS.DLL¡¢SOSEX.DLLÕâÁ½¸ö¾ÍÊÇÓÃÀ´¶Ô.NET³ÌÐòÔÚWindowsµ÷ÊÔ¹¤¾ßÖÐÆðµ½·­Òë×÷Óõĵ÷ÊÔÆ÷À©Õ¹¡£¼òµ¥½²¾ÍÊÇ£¬ÕâÁ½¸ö×é¼þÊÇ.NETÏîÄ¿×éרÃÅ¿ª·¢³öÀ´ÓÃÀ´¶Ô.NETÓ¦ÓóÌÐò½øÐз½±ãµ÷ÊÔÓõ쬵±È»²»ÓÃÕâÁ½¸öÀ©Õ¹Ò²Äܵ÷ÊÔ.NET³ÌÐò£¬Ö»²»¹ý¾Í»áºÜÀ§ÄÑ£¬»á±»ºÜ¶àϸ½ÚÊø¸¿×¡¡£ÓÐÁËÕâ¸öµ÷ÊÔÀ©Õ¹Ö®ºó£¬ÎÒÃǾͿÉÒÔÈÃÔ­ÉúWindowsµ÷ÊÔÆ÷ÕýÈ·µÄ·­Òë³ö.NETÏà¹Ø¸ÅÄî¡£

ͼ1£º£¨Windowsµ÷ÊÔ¹¤¾ßÖ´ÐÐÁ÷³Ì£©

ËùÓжÔ.NET³ÌÐò·¢ÆðµÄµ÷ÊԻỰ¶¼Òª¾­¹ý.NETµ÷ÊÔÀ©Õ¹×é¼þ½øÐз­Òë²ÅÐУ¬Ò²¾ÍÊÇҪʹÓÃ.NETµ÷ÊÔÀ©Õ¹µÄµ÷ÊÔÃüÁîÀ´µ÷ÊÔ.NET³ÌÐò¡£ÉÏͼÖУ¬ÎÒÃÇÈç¹ûÒªÏëµ÷ÊÔ.NET³ÌÐò¾ÍÐèÒª½«.NETµ÷ÊÔÀ©Õ¹×é¼þ¼ÓÔØµ½Windowsµ÷ÊÔ¹¤¾ßÖÐÈ¥£¬È»ºó²ÅÄÜ·½±ãÔÚWindowsµ÷ÊÔ¹¤¾ßÖÐʹÓá£

2.1.Windowsµ÷ÊÔ¹¤¾ßÏä

Windowsµ÷ÊÔ¹¤¾ßÏäÖаüº¬Á˺ܶàµ÷ÊÔ¹¤¾ß£¬¶¼ÊÇÓÃÀ´¸¨ÖúÓÚÎÒÃǽøÐз½±ãµ÷ÊÔÓõġ£Windowsµ÷ÊÔ¹¤¾ßÏä·ÖΪÁ½¸öÖ´Ðа汾£¬X86¡¢X64ÕâÁ½¸ö°æ±¾ÊÇרÃÅÓÃÀ´·ÖÎö²»Í¬µÄÔËÐÐʱ»·¾³µÄ£¬Èç¹ûÄãµÄ·ÖÎö»·¾³ÊÇ32λµÄÄã¾ÍÐèҪʹÓÃX86µÄ°æ±¾£¬Í¬Àí£¬Èç¹ûÊÇÓÃ64λµÄ»·¾³¾ÍÐèҪʹÓÃX64µÄ°æ±¾¡£

ÏÂÔØµØÖ·Îª£ºhttp://www.microsoft.com / whdc /devtools / debugging / default . aspx

¼ÇסѡÔñÄãÐèÒªµÄ°æ±¾£¬½¨ÒéÄãÁ½¸ö°æ±¾¶¼ÏÂÔØ£¬ÒòΪÄãËæÊ±ÐèÒªÕë¶ÔDumpÎļþ½øÐзÖÎö£¬¶øDumpÎļþÊÇËæÊ±¶¼ÓпÉÄÜÊÇÁ½¸ö°æ±¾¡£

Windows¹¤¾ßÏäÖеÄĬÈÏʹÓÃWinDbg.exe×÷Ϊµ÷ÊÔÊ×Ñ¡£¬ËüÊÇÒ»¸öGUI³ÌÐò¡£

ͼ2£º£¨Ä¬ÈϵÄWindowsµ÷ÊÔ¹¤¾ß£¬WinDbg£©

°²×°¹ýºóµÄ²Ëµ¥ÖоÍÖ»ÓÐWinDbg×÷Ϊµ÷ÊÔÑ¡Ôñ¡£

ÕâÀïÐèҪעÒâµÄÊÇ£¬µ±ÄãÆô¶¯ÁËWinDbgÖ®ºóÒªÁôÒâ³ÌÐòµÄÃû×ֺͱêÌ⣬ÒòΪµ±Äã´æÔÚÁ½¸ö°æ±¾µÄ WinDbg ʱ»áÈÝÒ׸ã´í£¬ÔÚµ÷ÊÔʱ»áÓи÷ÖÖÆæ¹ÖµÄÎÊÌâ³öÏÖ£¬µ±ÄãÕÒÁ˰ëÌìÖ®ºó½á¹û·¢ÏÖÊÇÒòΪÓôíÁ˰汾£¬ÄǾÍÕýµÄÎÞÓïÁË¡£

ͼ3£º£¨×¢ÒâÔËÐÐWinDbgµÄ»·¾³°æ±¾£©

WinDbgÊÇĬÈϵĵ÷ÊÔ¹¤¾ß£¬µ«ÊÇÔÚ¹¤¾ßÏäÖл¹Óм¸¸ö¿ØÖÆÌ¨µ÷ÊÔ¹¤¾ß£¬ËûÃÇÐбØÖ®Ï±ȽÏÇáÁ¿¼òµ¥£¬ÓÐЩÈÎÎñ±È½ÏºÃÖ´ÐУ¬ÔÚÅäºÏcmdʹÓûáºÜ·½±ã£¬±ÈÈ繤¾ßÏäÖеÄtlist.exeÓÃÀ´²é¿´½ø³ÌÐÅÏ¢µÄС¹¤¾ß¾Í·Ç³£·½±ã¡£

ͼ4£º£¨·½±ã²é¿´½ø³ÌID£©

ÕâÑùÎÒÃǾͿÉÒԺܷ½±ãµÄattachµ½Ò»¸öÖ¸¶¨µÄ½ø³Ì½øÐе÷ÊÔ¡£

Windowsµ÷ÊÔ¹¤¾ßÏäÖÐÓкܶàÆäËûµÄ¹¤¾ß£¬ÐèÒªÓõϰ¿ÉÒÔʹÓÃcmdÇл»µ½µ±Ç°°²×°µÄĿ¼ÏÂ:C: \ Program Files \Debugging Tools for Windows (x86)£¬»òÕßÄãÖ±½Óµ½¹¤¾ßµÄ°²×°Ä¿Â¼ÔËÐÐÒ²ÐУ¬Õâ¾Í¿´´Ë¹¤¾ßÊDz»ÊÇÖ§³ÖÊÖ¶¯ÎÞ²ÎÊýÆô¶¯ÁË¡£

2.2..NETµ÷ÊÔÀ©Õ¹°ü£¬SOS.DLL¡¢SOSEX.DLL

.NETµ÷ÊÔÀ©Õ¹°ü·ÖΪÁ½¸ö£¬Ò»¸öÊÇSOS.DLL£¬¸ÃÀ©Õ¹°üÊÇ.NETƽ̨µÄÒ»²¿·Ö£¬ÊôÓÚ¹Ù·½°æ±¾¡£¶øSOSEX.DLLÊÇ΢ÈíµÄÒ»Ãû½Ð¡°Steve Johnson¡±Èí¼þ¹¤³Ìʦ¿ª·¢£¬ÊôÓÚ¸öÈËά»¤µÄ£¬ÓÃÀ´ÔöÇ¿SOS.DLL¹¦Äܵģ¬ÔÚSOSEX.DLLÓкܶ๦ÄܱȽÏÇ¿´óµÄÀ©Õ¹ÃüÁî¡£

ÏÂÔØµØÖ·Îª£º

32λ£ºhttp://www.stevestechspot.com / downloads / sosex _ 32 . zip

64λ£ºhttp://www.stevestechspot.com/ downloads / sosex_ 64 . zip

¾ßÌåµÄ°ïÖúÎĵµ¿ÉÒԲ鿴¸Ã¹¤³ÌʦµÄ²©¿ÍÀ´Á˽âÏêÇé¡£ÕâÁ½¸ö°æ±¾ÓÃÀ´µ÷ÊÔ²»Í¬»·¾³µÄ³ÌÐòµÄ£¬Èç¹ûÄãµÄ³ÌÐòÊÇÔËÐÐÔÚ32λ»·¾³Ï£¬¾ÍÓÃ32λµÄSOSEX£¬Í¬Àí£¬ÓÃÔÚ64λϾÍÓÃ64λSOSEX¡£

¶øSOS.DLLÀ©Õ¹°üÊǸú×Å.NETFrameworkÒ»Æð°²×°µÄ£¬µØÖ·Î»ÓÚ£ºC:\Windows \ Microsoft .NET\Framework \ v4.0.30319 ¡£Èç¹ûÄãÊÇ64λϵͳµÄ»°µØÖ·¾ÍÊÇ£º

C:\Windows \ Microsoft .NET \ Framework64 \ v4.0.30319 ¡£ÔÚÕâÁ½¸öµØÖ·ÏÂÃæ¶¼¿ÉÒÔÕÒµ½ SOS.dll Îļþ£¬²»Í¬µÄĿ¼Ï¶ÔÓ¦ÓÚµ÷ÊÔ²»Í¬»úÆ÷ÀàÐ͵Ä.NET³ÌÐò¡£

ÓÐÁËÕâÁ½¸öÀ©Õ¹°üÖ®ºó¾Í¿ÉÒÔÔÚWinDbgÖжÔ.NET³ÌÐò½øÐзÖÎöÁË£¬¾ßÌåʹÓÃÎÒÃǺóÃæ»á½éÉÜ¡£

2.3.µ÷ÊÔϵͳµÄ»ù±¾Á÷³Ì¼°¼Ü¹¹£¨.NETDAC¸ÅÄî¡¢mscordacwks.dll£©

ÓÐÒ»¸öºÜÖØÒªµÄÔ­ÀíÎÒ¾õµÃºÜÓбØÒª½²Ò»Ï£¬¾ÍÊÇ.NETDAC¸ÅÄî¡£

Æäʵ.NETDACÒ²¾ÍÊÇ.NET Data Access .NETÊý¾Ý·ÃÎʲ㣬Õâ¸öÊÇרÃÅÓÃÀ´Ìṩ¸øSOS.DLL\SOSEXDLL»òÕ߯äËûµ÷ÊÔÀ©Õ¹°üʹÓõģ¬ËùÓеĵ÷ÊÔÀ©Õ¹×é¼þ±ØÐëͨ¹ýÕâ¸öDAC²ÅÄÜ·ÃÎʵ½.NETÔËÐÐʱµÄÊý¾Ý£¬ËùÒÔÔÚ³õ´ÎʹÓÃSOSµÄʱºò»á¾­³£Åö¼û¼ÓÔØ´íÎóµÄmscordacwks.dllÎļþ£¬´ËÎļþ¾ÍÊÇDACµÄÎïÀíÎļþ¡£

Õâ¸öÎļþºÍSOSÀ©Õ¹ÎļþÒ»Ñù£¬¶¼ÓÐÕⲻͬµÄ°æ±¾£¬µ±¼ÓÔØ²»Í¬ÀàÐ͵Ä.NET³ÌÐòʱ»áʹÓõ½²»Í¬°æ±¾µÄmscordacwks.dllÎļþ£¬µ±È»´ó²¿·ÖÇé¿öÏ´ËÎļþʱ×Ô¶¯¼ÓÔØµÄ£¬Ö»ÓгöÏÖÄã·ÖÎöµÄÎļþÓëÉú³Éµ÷ÊÔÎļþµÄ»·¾³²»Ò»ÖÂʱ²Å»á³öÏÖÍ·ÌÛµÄÎÊÌâ¡£

ͼ5£º£¨mscordacwks.dllλÖã©

µ±ÄãÖªµÀÕâ¸ö×é¼þÊǹ¤×÷ÓÚ´ËλÖÃʱ£¬µ±³öÏÖ¸úËüÏà¹ØµÄ´íÎóÌáʾʱÄã¾Í²»ÐèÒªµ£ÐÄÁË£¬Î޷ǾÍÊÇÎļþ¼ÓÔØµÄλÖûòÕß°æ±¾²»Æ¥Åä¶øÒÑ¡£

µ÷ÊÔÆ÷»á»°¡¢µ÷ÊÔÆ÷×¢ÈëÏß³Ì

»¹ÓÐÒ»µãÎÒ¾õµÃÒ²ºÜÓбØÒª½éÉܵľÍÊÇÓйص÷ÊÔÆ÷ÈçºÎµ÷ÊÔ.NET³ÌÐòµÄ£¬µ±ÎÒÃÇÔÚʹÓõ÷ÊÔÆ÷Æô¶¯±»µ÷ÊÔ³ÌÐò»òÕß½«µ÷ÊÔÆ÷¸½¼Óµ½±»µ÷ÊÔ½ø³Ìʱ£¬Æäʵµ÷ÊÔÆ÷»á×¢ÈëһЩÏ̵߳½.NET³ÌÐòÖУ¬Èõ÷ÊÔÏß³ÌÓë.NET³ÌÐòÔ­±¾µÄÏß³ÌÔÚÒ»¸ö.NETÖ´Ðл·¾³ÖУ¬ÕâÑùµÄÄ¿µÄÊÇÄܹ»Æðµ½×î.NET³ÌÐòÔÚÖ´ÐÐʱµÄ¿ØÖÆ£¬±ÈÈçÖжÏÖ´ÐУ¬ÉèÖöϵ㡣µ±ÎÒÃÇÐèÒªÖ´ÐÐijЩ¸úÏß³ÌÉÏÏÂÎÄÏà¹ØµÄÀ©Õ¹ÃüÁîʱ¾ÍÐèÒªÇл»µ½ÕýÈ·µÄÏß³ÌÉÏÈ¥¡£

ͼ6£º£¨µ÷ÊÔÆ÷×¢ÈëỊ̈߳©

´Ëʱ£¬µ÷ÊÔÆ÷ʹÓÃÒ»¸ö×¢ÈëÏ߳̽«.NET³ÌÐòÔÚÖ´ÐÐʱÖжϣ¬Ô­Àí¾ÍÊÇͨ¹ý·¢ËÍÏß³ÌÖжÏÃüÁîÀ´´ïµ½¿ØÖÆÄ¿±êỊ̈߳¬ÄÇôÊ×ÏÈÒªÄܹ»ÓëÔ­Ïß³ÌͨѶ²ÅÐУ¬ËùÒÔÐèҪעÈëÍйÜÏ̡߳££¨×¢Ò⣺עÈëµÄÏ̲߳»Ò»¶¨¾ÍÊÇÍйÜ.NETỊ̈߳¬ÑÏÖØËü×îºÃµÄ·½·¨¾ÍÊDz鿴ËùÓÐËùÓеĽø³ÌÄÚÏ̺߳ÍËùÓÐÍйÜỊ̈߳¬¶Ô±ÈһϾÍÖªµÀÁË¡££©£¬ÆäʵÕâ¸öIDΪ3µÄÏß³ÌÊǵ÷ÊÔÆ÷»á»°Ï̡߳£

ͼ7£º£¨Çл»µ½Ô­ÍйÜỊ̈߳©

ÎÒÃÇͨ¹ý~0sÃüÁîÇл»µ½ÎÒÃÇÐèÒªµ÷ÊÔµÄÔ­ÍйÜÏß³ÌÖУ¬±ÈÈ磬ÔÚÖ´ÐÐ !ClrStack ÃüÁîʱ£¬¾ÍÐèÒªÇл»µ½µ±Ç°Ïß³ÌÉÏÖ´ÐС£

ÎÒÃÇÐèÒªÑéÖ¤ËüÊÇ·ñÊÇ×¢ÈëÁËÍйÜÏ̻߳¹ÊÇ·ÇÍйÜÏ̡߳£

ͼ8£º£¨ÍйÜÏß³ÌÁÐ±í£©

ʹÓÃ!ThreadsÃüÁî¿ÉÒԲ鿴½ø³ÌÄÚËùÓеÄÍйÜỊ̈߳¬½ö½öÊÇÍйÜỊ̈߳¬´ËÃüÁîÊÇÎÞ·¨²é¿´·ÇÍйÜÏ̵߳쬽ÓÏÂÀ´ÎÒÃÇʹÓÃÁíÍâÒ»¸öÃüÁîÀ´²é¿´ËùÓеÄÏ̡߳£

ͼ9£º£¨ËùÓеÄÖ´ÐÐʱỊ̈߳©

ÕâÑùÎÒÃǾͿÉÒÔÅжϳö£¬µ÷ÊÔÆ÷ʹÓÃÁËIDλ7µÄ×÷ΪĿǰµÄµ÷ÊԻỰÏ̡߳£ÖªµÀÕâЩ±³ºóµÄÔ­ÀíºÜÖØÒª£¬µ±ÄãÔÚÖ´ÐÐij¸öµ÷ÊÔÃüÁîʱÄã¾Í»á·¢ÏÖ´ËÃüÁîÊÇ·ñÐèÒªÔÚ.NETÏß³ÌÖÐÖ´ÐУ¬»¹ÊÇ˵¿ÉÒÔÔÚµ÷ÊÔÆ÷»á»°Ïß³ÌÖÐÖ´ÐУ¬Ò»°ãdumpÀàµÄÃüÁî¶¼ÊÇ¿ÉÒÔÔ¶³ÌÖ´Ðеģ¬Ò²¾ÍÊÇ˵ÔÚµ÷ÊÔÆ÷»á»°ÖÐÖ´ÐУ¬µ±ÐèÒª¸ú×Ù.NETÏß³ÌÄÚ²¿¹ý³Ìʱ¾ÍÐèÒªÇл»µ½.NETÏß³ÌÉÏÈ¥Ö´ÐС£

2.4.VisualStudioÖм¯³ÉÀ©Õ¹µ÷ÊÔ£¨¸ü¼ÓϸÁ£¶ÈµÄµ÷ÊÔ³ÌÐò£©

SOSÀ©Õ¹Ò²ÊÇ¿ÉÒÔºÍVisualStudio½øÐм¯³ÉµÄ£¬ÕâÑùÕæµÄ·½±ãÁËÎÒÃǵ÷ÊÔһЩÐÔÄÜÒªÇó±È½Ï¸ßµÄ³ÌÐò£¬µ±³ÌÐòÔËÐÐÒ»¶Îʱ¼äºóÎÒÃÇÓÃVS¸½¼Óµ½½ø³Ì£¬È»ºó²é¿´Ò»Ð©ÖØÒªµÄ¶ÔÏóÊý¾Ý£¬µ«ÊÇ´ËʱÎÒÃÇ¿´²»µ½.NETÔËÐÐʱµÄһЩÊý¾Ý£¬±ÈÈ磺¶ÔÏóµÄ´úÁ䣬ÍйܶѵĴóС£¬Ï̳߳صÄÈÎÎñµÈ¡£Í¨¹ý¼¯³ÉSOSÀ©Õ¹»áÈÃÎÒÃǶԳÌÐòµÄÔËÐÐʱÓÐÁËÒ»¸ö¸ü¼Ó·½±ãµÄ¸ú×Ù¡£

ͼ10£º£¨´ò¿ª±¾µØ´úÂëµ÷ÊÔ£©

ÉèÖöϵ㣬ȻºóÔÚ¡±¼´Ê±´°¿Ú¡°£¨µ÷ÊÔ->´°¿Ú->¼´Ê±£©ÖмÓÔØÀ©Õ¹ SOS.DLL ¡£

ͼ11£º£¨ÔÚVisualStudio2012ÖмÓÔØSOS.dllÀ©Õ¹£©

ÕâÑùµÄ±ãÀûÐÔ´ó´óÌá¸ßÎÒÃÇÔÚµ÷ÊÔ³ÌÐòÄÚ´æ·½Ãæ¡¢Ï̷߳½ÃæµÄºÃ´¦£¬ÎÒÃÇ¿ÉÒÔÊʵ±µÄ×öѹÁ¦²âÊÔ£¬È»ºó Attach process £¬Ö´ÐÐSOSÀ©Õ¹ÃüÃûÀ´²é¿´ÄÚ´æÎÊÌ⣬µ±ÐèÒªµ÷ÊÔ³ÌÐòÂß¼­Ê±ÔÚµ¥²½µ÷ʽC#´úÂ룬һ¾ÙÁ½µÃ¡£

3.µ÷ÊÔ³ÌÐòÀàÐÍ£¨¿Í»§¶Ë³ÌÐò¡¢·þÎñ¶Ë³ÌÐò£©

.NET³ÌÐòÖ÷Òª·ÖΪÁ½À࣬һÀàÊǿͻ§¶Ë³ÌÐò£¬ÁíÒ»ÀàÊÇ·þÎñ¶Ë³ÌÐò¡£¶ÔÓÚÕâÁ½Àà³ÌÐòÀ´ËµÇ°Õßµ÷ÊÔʱ»ù±¾ÉÏ¿ÉÒÔͨ¹ý¸½¼Ó½ø³ÌµÄ·½Ê½½øÐе÷ÊÔ£¬¶ø¶ÔÓÚ·þÎñ¶Ë³ÌÐòÔò²»ÐУ¬ÒòΪ·þÎñ³ÌÐòͨ³£ÊÇÔËÐÐÔÚÒ»¸ö¸´ÔÓµÄÏßÉÏ»·¾³ÖУ¬ÎÒÃÇûÓÐÈκÎȨÏÞ»ò»ú»áÈ¥½Ó´¥£¬´ËʱÊÇͨ¹ý»ñÈ¡½ø³ÌµÄdumpÎļþÀ´½øÐзÖÎö¡£

¿Í»§¶Ë³ÌÐòÒ²´ó¸Å·ÖΪ¿ØÖÆÌ¨¡¢WinformÁ½ÖÖ£¬·þÎñ¶Ë³ÌÐò¶¼ÊÇ»ùÓÚASP.NET¿ò¼Ü£¬ËÞÖ÷ÓëIIS½ø³ÌÖС£

4.µ÷ÊÔ·½Ê½¼°³¡¾°

Õë¶Ô²»Í¬ÀàÐ͵ijÌÐò¼°³¡¾°ÐèҪʹÓò»Í¬µÄ·½Ê½½øÐе÷ÊÔ£¬¿Í»§¶Ë³ÌÐòÖеĿØÖÆÌ¨³ÌÐò»ù±¾ÉÏ¿ÉÒÔͨ¹ýÔÚµ÷ÊÔÆ÷ÖÐÆô¶¯µÄ·½Ê½½øÐе÷ÊÔ¡£Èç¹ûÊÇGUI³ÌÐòÔòÐèÒª¸½¼Ó½ø³Ì·½Ê½¡£·þÎñ¶Ë³ÌÐòÈç¹ûÔÚÌõ¼þÔÊÐíÏÂÒ²ÊÇ¿ÉÒÔʹÓø½¼Ó½ø³ÌµÄ·½Ê½½øÐе÷ÊԵ쬵«ÊÇÕâÒ»°ã²»Ì«¿ÉÄÜ£¬ÒòΪһµ©¸½¼Ó½ø³Ì½« block סËùÓеÄÏ̻߳¡£

4.1.±¾»úµ÷ÊÔ£¨Attach Process£¬µ÷ÊÔÆ÷Æô¶¯£©

±¾»úµ÷ÊÔ¿ÉÒÔÖ±½ÓÔÚµ÷ÊÔÆ÷ÖÐÆô¶¯³ÌÐò£¬WinDbg´ò¿ªºó£¬ÔÚÎļþÖÐÓÐÒ»¸ö Open Executable £¬¿ÉÒÔ´ò¿ªÒ»¸ö¿ÉÖ´ÐÐÎļþ¡£Èç¹ûÊÇʹÓÃNTSD¿ØÖÆÌ¨µ÷ÊÔÆ÷£¬ÔòÐèÒªÔÚNTSDºóÃæ¸úÉϳÌÐòµÄÖ´Ðз¾¶¡£

ͼ12£º£¨ntsd.exe´ò¿ªµ÷ÊÔ³ÌÐò£©

ͬÑù£¬ÔÚWinDbgÖÐÒ²ÓÐÒ»¸ö¸½¼Ó½ø³ÌµÄÑ¡ÏNTSDÒ²ÊÇÒ»Ñù£¬²Ù×÷ÆðÀ´¶¼±È½Ï¼òµ¥£¬ÐèҪעÒâµÄÊǵ±Äã¶Ô½ø³Ì½øÐи½¼ÓʱҪÇå³þ´Ë½ø³ÌÊǶàÉÙλµÄ£¬È»ºóÄãÐèҪѡÔñÕýÈ·µÄµ÷ÊÔÆ÷½øÐе÷ÊÔ¡£

4.2.²»Öжϵ÷ÊÔ»òÕß³ÆÊºóµ÷ÊÔ£¨¶ÔDumpÎļþ½øÐе÷ÊÔ£©

ÔÚ²»Äܹ»¶Ô±»µ÷ÊÔ³ÌÐòÖ±½Óµ÷ÊÔʱÎÒÃǾÍÐèÒª´Ë³ÌÐòµÄ½ø³Ì¾µÏñÎļþ£¬´Ë¾µÏñÎļþ¾ÍÊǽø³ÌÔÚijһ¸öʱ¿ÌµÄ¿ìÕÕ£¬Í¨¹ý·ÖÎöÕâ¸ö¿ìÕÕ£¬ÎÒÃÇÒ²ÊÇ¿ÉÒÔ¶¨Î»³öÎÊÌâµÄ¡£Ê×ÏÈÎÒÃÇÐèҪʹÓÃÊʵ±µÄ¹¤¾ßÀ´»ñÈ¡½ø³ÌµÄdumpÎļþ£¬²Ù×÷ϵͳ±¾ÉíµÄÈÎÎñ¹ÜÀíÆ÷¾ÍÓÐÕâ¸ö¹¦ÄÜ£¬dumpÎļþµÄ´æ·ÅλÖÃĬÈÏÔÚÓû§ÐÅÏ¢ÁÙʱÎļþÏÂÃæ£¬±ÈÈ磺XXX \ Users \ Administrator \AppData \Local \ Temp £¬»ñÈ¡ÍêdumpÎļþºóÈÎÎñ¹ÜÀíÆ÷»áÓÐÌáʾ·¾¶µÄ¡£

ͼ13£º£¨Ê¹ÓÃÈÎÎñ¹ÜÀíÆ÷»ñÈ¡dumpÎļþ£©

ͼ14£º

ʹÓÃÈÎÎñ¹ÜÀíÆ÷»ñÈ¡dumpÎļþ¹ÌÈ»ºÜ·½±ã£¬µ«ÊÇÓÐÒ»¸öÎÊÌâ¾ÍÊÇÈç¹ûµ±Ç°»úÆ÷ÊÇ64λµÄ£¬²¢ÇÒÄãµÄ½ø³ÌÊÇÒÔ32λ·½Ê½ÔËÐеģ¬ÄÇô´ËʱÄã»ñÈ¡³öÀ´µÄdumpÎļþÊÇ64λµÄ£¬µ±Äãͨ¹ý32λµÄµ÷ÊÔÆ÷ÎÞ·¨½øÐзÖÎö£¬ÉõÖÁ»áÓи÷ÖÖÆäËûµÄÎÊÌ⣬ÕâЩÎÊÌâ¾ÍÊÇÒòΪ»ñÈ¡dumpÎļþµÄ»úÆ÷»·¾³ºÍÄãÔ¤ÏëµÄ²»Ò»Ö¡£Õâ¸öʱºòÎÒÃÇÏ£ÍûÄܹ»Í¨¹ýºÜÃ÷Á˵ķ½Ê½À´»ñÈ¡dumpÎļþ£¬¾ÍÊÇͨ¹ýµ÷ÊÔÆ÷À´»ñÈ¡dumpÎļþ¡£

ͨ¹ýµ÷ÊÔÆ÷À´»ñÈ¡dumpÎļþÓкܶàºÃ´¦£¬¿ÉÒÔÉèÖúܶàÑ¡Ï°üÀ¨Ö»»ñÈ¡½ø³ÌµÄÄIJ¿·Ö¾µÏñÊý¾ÝµÈ¡£

ÏÈͨ¹ýtlist.exe²é¿´ËùÓнø³ÌÁÐ±í£¬»áÓÐÒ»¸ö½ø³ÌIDºÅ£¬ÓÐÁËIDºÅ²ÅÄܽøÐлñÈ¡¡£

ͼ15£º£¨tlist¡¢ntsd ½øÈëµ½Ö¸¶¨½ø³ÌÖУ©

½øÈëµ½ntsdµ÷ÊÔÆ÷ÖУ¬È»ºóʹÓà .dump/mf d: \ order . dmp ÃüÁî»ñÈ¡dumpÎļþµ½DÅÌ¡£

ͼ16£º£¨Ê¹ÓÃNTSD.exe»ñÈ¡dumpÎļþ£©

´ËʱÎÒÃǾͳɹ¦µÄ»ñÈ¡µ½ÁËdumpÎļþ¡£

ͨ¹ýµ÷ÊÔÆ÷»ñÈ¡dumpÎļþ±È½ÏÎȶ¨¿É¿¿£¬ÒòΪ»úÆ÷ÔËÐл·¾³µÄ²»Í¬£¬Í¨¹ýÈÎÎñ¹ÜÀíÆ÷»ñÈ¡µÄdumpÎļþ»á´æÔÚһЩÎÞ·¨Ô¤ÖªµÄÎÊÌ⣬Äã²¢²»Çå³þ£¬µ±Ç°ÈÎÎñ¹ÜÀíÆ÷ÊÇʹÓÃÄĸö°æ±¾µÄ»·¾³Êä³öµ÷ÊÔÐÅÏ¢µÄ¡£

ÓÐÁËdumpÎļþÖ®ºó¾ÍÊÇͨ¹ýµ÷ÊÔ¹¤¾ß´ò¿ª¾ÍÐÐÁË£¬WinDbg ¾ÍÓÐÒ»¸ö²Ëµ¥×¨ÃÅ´ò¿ªdumpÎļþµÄ£¬ Open Crash Dump ¡£Ê¹ÓÃntsdÐèҪʹÓÃÃüÁî ntsd -z d :\ order . dmp¡£

5.Ò»°ãµ÷ÊÔ²½Öè

ÖªµÀÁ˵÷ÊÔµÄһЩԭÀíºÍ¹¤¾ßÖ®ºóÎÒÃÇÀ´¿´Ò»Ïµ÷ÊԵĻù±¾²½Ö裬ÕâЩ²½Öè¶¼¾ßÌåÊÇÖ¸µÄʲôÒâ˼£¬ÓÐÄÄЩºÃ´¦¡£

5.1.ÉèÖ÷ûºÅÎļþ£¨¹«ÓзûºÅ¡¢Ë½ÓзûºÅ£©

ÉèÖ÷ûºÅÎļþµÄÄ¿µÄÊÇΪÁËÄܹ»ÔÚµ÷ÊÔÆ÷ÖÐÕýÈ·µÄ¶ÔÓ¦µ½Ô´´úÂëµÄλÖúÍһЩԪÊý¾ÝÐÅÏ¢¡£·ûºÅÎļþ¶¼ÊÇ*.pdbÎļþÃû¡£·ûºÅÎļþ·ÖΪ¹«ÓкÍ˽ÓÐÁ½ÖÖ£¬¹«ÓеͼÊǹ«Ë¾¹«¿ª³öÈ¥ÓÃÓÚ°ïÖúµ÷ÊÔÓõ쬶øË½ÓеÄÊǹ«Ë¾ÄÚ²¿Ê¹Óõģ¬ÎªÊ²Ã´ÒªÇø·Ö¹«ÓкÍ˽ÓУ¬ÊÇΪÁË·ÀֹĿÏò¹¤³Ì¡£

ͼ17£º£¨ÉèÖ÷ûºÅÎļþ·¾¶£©

Ê×ÏÈͨ¹ý .sympath d: £¬ÉèÖÃÁË·ûºÅ·¾¶ÎªDÅÌ£¬È»ºóÓÖʹÓà .symfix+ d: £¬ÊÇÉèÖÃ˽ÓзûºÅ·¾¶£¬²¢ÇÒʹÓÃdÅÌΪ»º´æÂ·¾¶¡£ÔÚ×îºóÒ»¸öºìÏßÖÐÎÒÃÇÄÜ¿´³öÀ´¡£

ΪʲôʹÓà .symfix ʱҪ´øÉÏÒ»¸ö+ºÅ£¬ÆäʵÊǸæËßµ÷ÊÔÆ÷ÎÒÃÇÊǶà¼ÓÒ»¸ö·ûºÅλÖ㬶ø²»ÊǸ²¸ÇÔ­ÓзûºÅλÖá£

ÉèÖúÃÁËÁ½¸ö·ûºÅλÖúóÐèҪʹÓà .reload ÃüÁîÀ´ÖØÐ¼ÓÔØÄ£¿é£¬ÕâÑùµ÷ÊÔÆ÷²Å»áÈ¥·ûºÅλÖÃÈ¥¼ÓÔØÕâЩ·ûºÅ¡£

ͼ18£º£¨¼ÓÔØµÄ·ûºÅÎļþ£©

 

µ÷ÊÔÆ÷»á×Ô¶¯µÄ½«¹«ÓзûºÅÏÂÔØµ½Äã¸Õ²ÅÉèÖõĻº´æÄ¿Â¼ÖС£

5.2.¼ÓÔØ.NET³ÌÐòÀ©Õ¹µ÷ÊÔ°ü£¨SOS.DLL¡¢SOSEX.DLL£©

¶Ô.NET³ÌÐò·ÖÎöµ±È»ÊÇÐèÒª¼ÓÔØSOSÀ©Õ¹ÁË¡£¼ÓÔØSOSÀ©Õ¹ÓÐÁ½¸öÃüÁî¿ÉÒÔʹÓ㬵ÚÒ»¸öÊÇ .load C: \ Windows \ Microsoft . NET \ Framewor \ v4.0 .30319 \SOS. dll £¬. load ÃüÁîÊÇÒª¸ø³ö sos.dll ¾ø¶Ô·¾¶µÄ¡£µÚ¶þ¸öÊÇ.loadby sos modulename£¬.loadby ÃüÁîÊÇ¿ÉÒÔ¸ù¾ÝÒѾ­¼ÓÔØµÄÄ£¿éÃû³ÆÀ´¼ÓÔØ SOS.dll À©Õ¹¡£Ê¹ÓõÚÒ»¸öÃüÁîÓÐÒ»¸öÎÊÌâ¾ÍÊÇ£¬ÎÒÃÇÐèÒªÈ˹¤µÄÅжϵ±Ç°»·¾³µ½µ×ÊÇÐèҪʲô°æ±¾µÄ SO SÀ©Õ¹£¬¶øÊ¹Óà .loadby ÊÇ¿ÉÒÔ¸ù¾ÝÒѾ­¼ÓÔØµÄÄ£¿éÀ´×Ô¶¯µÄ²éÕÒ¶ÔÓ¦µÄSOSÀ©Õ¹¡£

 

ʹÓÃ.loadby ÃüÁîºÜÈÝÒ׵ľͿÉÒÔ¼ÓÔØSOSÀ©Õ¹£¬¶ø²»ÐèÒª×Ô¼ºÈ¥Åжϵ±Ç°³ÌÐòÊÇ.NETʲô°æ±¾µÄ¡£

5.3.µ÷ÊÔµÄÈýÖÖÃüÁîÀàÐÍ£¨±ê×¼ÃüÁî¡¢ÔªÃüÁî¡¢À©Õ¹ÃüÁ

ÔÚʹÓõ÷ÊÔÆ÷µ÷ÊÔ³ÌÐòʱ£¬ËùҪʹÓõÄÃüÁîÖ÷Òª·ÖΪÈýÀà¡£

µÚÒ»ÀàÊDZê×¼ÃüÁ¾ÍÊDz»´øÈκηûºÅ¿ªÊ¼µÄÃüÁ±ÈÈ磺pb¡¢lmvm¡£ÕâÒ»ÀàÃüÁîÊÇËùÓÐWindowsµ÷ÊÔ¹¤¾ßÏäÖеĵ÷ÊÔ¹¤¾ßͨÓõ쬲»¹ÜÄãÊÇʹÓà ntsd »¹ÊÇ winDbg ¶¼¿ÉÒÔ¡£

µÚ¶þÀàÃüÁîÊÇÔªÃüÁ¾ÍÊÇʹÓÃ"."ºÅ¿ªÊ¼µÄÃüÁÕâÒ»ÀàÃüÁî²¢²»ÊÇÔÚËùÓе÷ÊÔ¹¤¾ßÖÐͨÓõġ£µÚÈýÀàÊÇÀ©Õ¹ÃüÁÀ©Õ¹ÃüÁî¾ÍÊǸ÷¸öµ÷ÊÔÆ÷À©Õ¹³öÀ´µÄÃüÁҲ¾ÍÊÇÒÔ"!"¿ªÊ¼µÄÃüÁÈ磺!dumpheap - stat £¬! dumpstatcobject s¡£

6.µ÷ÊÔÀ©Õ¹µÄ¼¸¸ö±È½Ï³£ÓõÄÃüÁSOS.DLL¡¢SOSEX.DLL£©

µ±È»Õâ¸ö´¿´âÊÇÎҵĸöÈ˸оõ£¬ÅÅÃû²»·ÖÏȺó¡£

!dumpheap -stat £¨²é¿´ÍйܶÑͳ¼ÆÐÅÏ¢£©

0:000> !dumpheap -stat
Statistics:
MT Count TotalSize Class Name
65366e78 1 12
System.Collections.Generic.EnumEquali

tyComparer`1

[[System.Web.Compilation.FolderLevelBui

ldProviderAppliesTo,
System.Web]]
653667cc 1 12
System.Collections.Generic.ObjectEquality

Comparer`

1[[System.Web.WebSockets.IAsyncAbortableWebSocket,
System.Web]]
65365f08 1 12
System.Lazy`1+Boxed[[System.Web.Security.Cryptogr

aphy.AspNetCryptoServiceProvider,
System.Web]]
65365a34 1 12
System.Web.Security.Cryptography.Homogenizin

gCryptoServiceWrapper
65361e20
1 12 System.Web.Configuration.CustomErrorsMode

!dumpheap -type £¨²é¿´Ä³¸öÀàÐÍÔÚ¶ÑÖеÄÐÅÏ¢£©

0:000> !dumpheap -type System.String

Address MT Size
10731228 624aacc0 14
107312c4 624aacc0 22
107312dc 624aacc0 78
10731370
624aacc0 28

¿ÉÒÔÒ»ÑÛ¿´³öÄÄЩ¶ÔÏó¹ý´ó£¬ÕâÀïÎÒÊÇΪÁËÑÝʾ¶øÓã¬Ò»°ãÔÚÏîÄ¿¿ª·¢ÖУ¬ÎÒÃǶ¼´ó¸ÅÖªµÀÄÄЩ¶ÔÏó¿ÉÄÜ»áÓÐÄÚ´æÎÊÌ⣬±ÈÈ磺ͬ²½Êý¾ÝʱµÄ»º´æ¶ÔÏó¡£

!dumpobj 10731228 £¨²é¿´¶ÔÏóÏêÇ飩

0:000> !dumpobj 10731228
Name:
System.String
MethodTable: 624aacc0
EEClass: 620b486c
Size:
14(0xe) bytes
File:
C:\Windows\Microsoft.Net\assembly\GAC_32\mscor

lib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
String:

Fields:
MT Field Offset Type VT Attr
Value Name
624ac480 40000aa 4 System.Int32 1 instance
0 m_stringLength
624ab6b8 40000ab 8 System.Char 1 instance

0 m_firstChar
624aacc0 40000ac c
System.String 0 shared static Empty
>> Domain:Value
00dbe558:NotInit 00e11c90:NotInit 00e5f040

:NotInit <<

!threads£¨²é¿´ÍйÜỊ̈߳©

0:000> !threads
ThreadCount: 17
UnstartedThread: 0
BackgroundThread: 12
PendingThread: 0
DeadThread: 5
Hosted Runtime: no

Lock

ID OSID ThreadOBJ State GC Mode GC

Alloc Context Domain Count Apt Exception
7 1 43a8 00dc2620 28220 Preemptive

1484CA40:00000000 00dbe558 0 Ukn
15 2 4414 00dd38d0 2b220 Preemptive

00000000:00000000 00dbe558 0 MTA (Finalizer)
17 3 441c 00e09e88 102a220 Preemptive

00000000:00000000 00dbe558 0 MTA (Threadpool
Worker)
18 4 4420 00e0ce80 21220 Preemptive

00000000:00000000 00dbe558 0 Ukn

µ±È»»¹ÓкܶàÆäËûºÜ²»´íµÄÃüÁÕâÀïÎÒ¸öÈ˾õµÃÕ⼸¸ö±È½Ï³£Óã¬ÒªÏëÁ˽âËùÓеÄÃüÁî¿ÉÊÇÔÚµ÷ÊÔÆ÷ÖÐʹÓÃÀ©Õ¹ÃüÁî!helpÀ´²é¿´ËùÓеÄÃüÁî°ïÖú¡£

0:000> !help

 

SOS is a debugger extension DLL

designed to aid in the debugging

of managed programs. Functions are

listed by category, then roughly

in order of importance. Shortcut names

for popular functions are listed in

parenthesis. Type "!help <functionname>"

for detailed info on that function.

Object Inspection Examining code and stacks

 

DumpArray (da) ThreadState

DumpStackObjects (dso) IP2MD

DumpHeap U

DumpVC DumpStack

GCRoot EEStack

ObjSize CLRStack

FinalizeQueue GCInfo

PrintException (pe) EHInfo

TraverseHeap BPMD
COMState

Examining CLR data structures

Diagnostic Utilities

DumpDomain VerifyHeap EEHeap VerifyObj

Name2EE FindRoots SyncBlk HeapStat

DumpMT GCWhere DumpClass ListNearObj (

lno) DumpMD GCHandles Token2EE GCHan

dleLeaks EEVersion FinalizeQueue (fq)

DumpModule FindAppDomain ThreadPool

SaveModule DumpAssembly ProcInfo
DumpSigElem StopOnException (soe)

DumpRuntimeTypes DumpLog DumpSig

VMMap RCWCleanupList VMStat DumpIL

MinidumpMode
DumpRCW AnalyzeOOM (ao) DumpCCW

Examining the GC history Other

----------------------------- -----------------------------

HistInit FAQ HistRoot HistObj

HistObjFind HistClear

7.¼òµ¥Ê¾Àý£¬³£¼ûµÄÏßÉÏÁ½ÀàÎÊÌâ

ÕâÀïÎÒÃÇʹÓÃÁ½¸öСʾÀýÖ±¹ÛµÄ¸ÐÊÜһϽӴ¥.NETÔËÐÐʱ״̬µÄ¸ÐÊÜ£¬¾¡¹ÜÕæÊµµÄÎÊÌâ¿ÉÄܱÈÕâ¸ö¸´ÔӺܶ࣬µ«Êǽâ¾öÎÊÌâµÄ˼·ÊÇÒ»ÑùµÄ¡£

7.1.ÄÚ´æÎÊÌ⣨ÄÚ´æÆ«¸ß£¬ÄÚ´æÒç³ö£©

·þÎñ³ÌÐò×îŵÄÐÔÄÜÎÊÌâÖ®Ò»¾ÍÊÇÄڴ棬µ±ÄÚ´æºÜ¸ßµÄÇé¿öÏÂÎÒÃÇÄܹ»Í¨¹ý¶ÔdumpÎļþ½øÐв鿴£¬¿´ÄÄЩ¶ÔÏóµ¼ÖÂÄÚ´æÒ»Ö±¸ß¡£µ±ÄÚ´æÒ»Ö±¸ßµÄÇé¿öϾͻáÈÝÒ×µ¼ÖÂÄÚ´æÒç³öÒì³££¬ÉõÖÁÊÇGCƵ·±µÄÖ´ÐУ¬µ±GCÒ»Ö´ÐоͻᵼÖ·þÎñ²¢·¢Ï½µ£¬ÒòΪËüÒª¹ÒÆðËùÓеÄỊ̈߳¨ÕâÀïÖ¸µÄÊÇ·þÎñÆ÷ģʽµÄ.NETCLR£¬Ïà¶ÔÓ¦µÄ»¹Óй¤×÷վģʽµÄ.NETCLR£©¡£

namespace OrderManager
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("app begin...");
Console.ReadLine();

List<byte[]> l = new List<byte[]>();

for (int i = 0; i < 9999999; i++)
{
byte[] b = new byte[1000];

l.Add(b);

Console.WriteLine(i);
}

Console.WriteLine("end begin...");
Console.ReadLine();
}
}
}

ÕâÒ»¶Î´úÂë»áÒ»Ö±·ÖÅäÄÚ´æÖ±µ½×îºóÄÚ´æÒç³öÒì³£ÖÕÖ¹³ÌÐò£¬ÎÒÃÇÔÚÄÚ´æ±È½ÏµÄÇé¿öÏÂÀ´»ñȡһ¸ödumpÎļþ£¬È»ºóͨ¹ýÊʵ±µÄÃüÁîÀ´¶¨Î»Äĸö¶ÔÏóÕ¼ÓÃÄÚ´æ¹ý¸ß¡£

ÔÚ²»ÖªµÀ¶ÔÏóÀàÐ͵ÄÇé¿öϱȽϼòµ¥µÄ·½Ê½¾ÍÊÇʹÓà £º0:000 > !dumpheap -stat £¬ÃüÁ¸ÃÃüÁîµÄÒâ˼ÊÇͳ¼Æµ±Ç°¶ÑµÄÐÅÏ¢£¬ÔÚÕâÀï¾Í¿ÉÒÔÒ»ÑÛÕÒµ½Äĸö¶ÔÏóÕ¼ÓöàÉÙÄÚ´æ¡£

0:000> !dumpheap -stat
Statistics:
MT Count TotalSize Class
Name
624ad6a8 1 12 System.Collections.Generic.

GenericEquali

tyComparer`1[[System.String,
mscorlib]]
624ac480 1 12 System.Int32

624aa58c 1 12 System.Collections.Generic

.ObjectEquality

Comparer`1[[System.Type,
mscorlib]]
624adec0 1 16 System.Security.Policy.Assem

blyEvidenceFactory
624ace34 1 16 System.Text.DecoderReplacemen

tFallback
624acde4 1 16 System.Text.EncoderReplacement

Fallback
6247a840 1 16 System.IO.TextReader+SyncText

Reader
624ade0c 1 20 Microsoft.Win32.SafeHandles

.SafePEFileHandle
6245fe58 1 20 Microsoft.Win32.SafeHandles

.SafeFileMappingHandle
6245fe08 1 20 Microsoft.Win32.SafeHandles

.SafeViewOfFileHandle
6245fd74 1 20 System.Text.InternalEncode

rBestFitFallback
6245f714 1 20 System.IO.Stream+NullStream
624ad3d4 1 24 System.Version
6245fdc4 1 24 System.Text.InternalDecoder

BestFitFallback
6245fa8c 1 24 System.IO.TextWriter+SyncTextWriter
00163170 1 24 System.Collections.Generic

.List`1[[System.Byte[], mscorlib]]
624ad4b4 1 28 System.Text.StringBuilder
624ab0b4 1 28 System.SharedStatics
6247c1b8 1 28 System.Text.DBCSCodePageEncoding

+DBCSDecoder
6245f94c 1 28 Microsoft.Win32.Win32Native+InputRecord
6245f664 1 28 System.Text.EncoderNLS
624ade68 1 32 System.Security.Policy.PEFileEvi

denceFactory
624acc10 1 32 System.Text.UnicodeEncoding
624ab938 1 36 System.Security.PermissionSet
624aced8 2 40 Microsoft.Win32.SafeHandles.Safe

FileHandle
624ab7b0 1 40 System.Security.Policy.Evidence
624aaa64 1 44 System.Threading.ReaderWriterLock
6247cd1c 1 44 System.Text.InternalEncoderBes

tFitFallbackBuffer
624aab90 1 48 System.Collections.Hashtable+bucket[]
620c2348 1 48 System.Collections.Generic.Dictionary

`2[[System.String,
mscorlib],[System.Globalization.CultureData, mscorlib]]
620c2268
1 48 System.Collections.Generic.Dictionary`

2[[System.Type,
mscorlib],[System.Security.Policy.Evidence

TypeDescriptor,
mscorlib]]
624acf98 1 52 System.Collections.Hashtable
624ab8d8 1 52 System.Threading.Thread
624acb20 2 56 System.Reflection.Runtime

Assembly
6245f994 2 56 System.IO.__ConsoleStream
624adaa8 1 60 System.IO.StreamWriter
624ad7b4 1 60 System.Collections.Generic.

Dictionary`2+Entry

[[System.String,
mscorlib],[System.Globalization.CultureData,

mscorlib]][]
6249fbec
1 64 System.IO.StreamReader
624ab4e4 1 68 System.AppDomainSetup
6247c624 1 76 System.Text.DBCSCodePageEncoding
624ad474 1 84 System.Globalization.CalendarData
624ab060 7 84 System.Object
624aafe4 1 84 System.ExecutionEngineException
624aafa0 1 84 System.StackOverflowException
624aaf5c 1 84 System.OutOfMemoryException
624aae08 1 84 System.Exception
624ab130 1 112 System.AppDomain
624ad164 2 144 System.Globalization

.CultureInfo
624ab028 2 168 System.Threading.ThreadAbor

tException
624ad82c 2 264 System.Globalization.Number

FormatInfo
624aa9f8 1 284 System.Collections.Generic.

Dictionary`2+Entry

[[System.Type,
mscorlib],[System.Security.Policy.Evidence

TypeDescriptor,
mscorlib]][]
624ac448 8 484 System.Int32[]
624ad3a0 2 616 System.Globalization

.CultureData
624abe78 26 728 System.RuntimeType
624ab680 7 2910 System.Char[]
6245ab98 25 18064 System.Object[]
624aacc0 3283 85972 System.String
00363a78 7 2031754 Free
624696f8 2 2097184 System.Byte[][]
624acf54 301232 304844554 System.Byte[]

×îºóÒ»¸öÏÔÈ»ÄÚ´æÕ¼ÓñȽϸߣ¬Õ¼ÁË 304844554 byte£¬Èç¹ûÄãÏëÔÚ´ËÇé¿öÏÂÖªµÀ¶ÔÏóµÄÄÚ´æµØÖ·Äã¾ÍÖ±½ÓʹÓà !dumpheap £¬²»´øÈκβÎÊý¡£ÓÉÓÚ´ËÃüÁî»áµ¼ÖºܶàÊä³ö£¬ÎÒÕâÀï¾Íд³öÊä³öÄÚÈÝÁË¡£Í¨¹ý!dumpheap »áµÃµ½ÄÚ´æºÜ¸ßµÄ¶ÔÏóµØÖ·£¬02d55368 £¬Õâ¸öµØÖ·¾ÍÊÇ System.Byte[] ¶ÔÏó£¬ÎªÁËÕÒµ½¶ÔÏóÔÚÄÄÀï·ÖÅäµÄ£¬ÎÒÃÇÐèҪʹÓÃ!gcroot 02d55368£¬ÃüÁ²é¿´¶ÔÏóµÄ¸ùÔÚÄÄÀï¡£

0:000> !gcroot 02d55368
Thread 143310: 0028f364
004f0100 OrderManager.Program.Main(System.

String[])
[e:\NETDebug\DebugDemoProject\OrderManager\

Program.cs @ 22]
ebp+18: 0028f380
-> 01b746c0 System.Collections.Generic.List

`1[[System.Byte[], mscorlib]]
-> 02d55368 System.Byte[][]

ÖªµÀÁ˸ù¾ÍºÃ°ì¶àÁË£¬Ö±½Ó¿´Ô´´úÂë¾ÍÄÜ·¢ÏÖÎÊÌâ¡£Èç¹ûÄ㻹²»ËÀÐĵϰ¿ÉÒÔʹÓà !dumpobj ²é¿´ List ¶ÔÏó¡£

0:000> !dumpobj 01b746c0
Name:
System.Collections.Generic.List`

1[[System.Byte[],

mscorlib]]
MethodTable:
00163170
EEClass: 6211c8b0
Size: 24(0x18) bytes
File:
C:\Windows\Microsoft.Net\assembly\GAC

_32\mscorlib\v4.

0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
MT Field Offset Type VT Attr Value Name

6245ab98 4000c75 4 System.Object[] 0 instance

02d55368 _items

624ac480 4000c76 c System.Int32 1 instance

301229

_size
624ac480 4000c77 10 System.Int32 1 instance

301229

_version
624ab060 4000c78 8 System.Object 0 instance

00000000

_syncRoot

6245ab98 4000c79 0 System.Object[] 0 shared

static

_emptyArray

>> Domain:Value dynamic statics NYI 00359520:

NotInit <<

ÕâÀïÐèҪעÒâµÄÊÇ£¬Èç¹ûÄãÊÇÏëÖ´ÐÐ !Clrstack -a ÃüÁîµÄ»°£¬µ±ÄãʹÓõ÷ÊÔÆ÷Æô¶¯»òÕßÊǸ½¼Ó½ø³ÌµÄ·½Ê½µÄ»¯£¬Òª¼ÇסÇл»µ½Êʵ±µÄÏß³ÌÉϲÅÄÜ¿´ÐС£

7.2.Ïß³ÌÎÊÌ⣨CPU¹ý¸ß£¬Ïß³ÌËÀËø£©

CPU¹ý¸ßÒ²ÊÇÏßÉϱȽϼ¬ÊÖµÄÎÊÌâÖ®Ò»£¬²é¿´CPU¹ý¸ßµÄ²½ÖèÒ»°ã·ÖΪÁ½²½£¬²é¿´Ï̵߳ÄÖ´ÐÐʱ¼ä£¬È»ºóÇл»µ½Ïß³ÌÉÏÏÂÎÄ£¬Ö´ÐÐ!ClrStack -a£¬¿´µ±Ç°Ïß³ÌÔÚÄÄÀ﹤×÷£¬µ½µ××öʲô²Ù×÷ÄØ¡£

0:004> !runaway
User Mode Time
Thread Time
0:143310 0 days 0:00:01.934
4:142ac0 0 days 0:00:00.046
7:143874 0 days 0:00:00.000
6:143870 0 days 0:00:00.000
5:14386c 0 days 0:00:00.000
3:1432ec 0 days 0:00:00.000
2:143384 0 days 0:00:00.000
1:143254 0 days 0:00:00.000

²âÊÔÏß³ÌIDΪ0µÄÖ´ÐÐʱ¼ä±È½Ï´ó£¬ÎÒÃÇÐèÒªÇл»µ½Ïß³Ì0ÉÏÈ¥Ö´Ðв鿴µ÷ÓöÑÕ»ÐÅÏ¢£¬~0s¡£

0:000> !ClrStack -a

0028f348 62b897f9 System.IO.TextWrite

r+SyncTextWriter.

WriteLine(Int32)

PARAMETERS:

this (<CLR reg>) = 0x01b74258 value =

<no data>

0028f358 62a66313 System.Console.

WriteLine(Int32)

PARAMETERS:

value = <no data>

0028f364 004f0100 OrderManager.Program.

Main(System.String[]) [e:\NETDebug\Debug

DemoProject\OrderManager

\Program.cs @ 22] PARAMETERS:

args (0x0028f38c) = 0x01b71fe4

LOCALS:

0x0028f380 = 0x01b746c0

0x0028f388 = 0x000498ac

0x0028f37c = 0x16a2e338

0x0028f384 = 0x00000001

0028f51c 63162952 [GCFrame: 0028f51c]

ÎÒÃǻᷢÏÖÔÚMain·½·¨ÖÐÓÐÒ»¸ö±¾µØ±äÁ¿0x0028f380 £¬±£´æµÄÖµÊÇ 0x01b746c0 £¬Ëü¾ÍÊÇÖ¸Ïò¸Õ²Å·ÖÅäºÜ¶àÄÚ´æµÄList<byte[]>¶ÔÏó¡£

Ïß³ÌËÀËø±È½Ï¸´ÔÓ£¬ÕâÀïÖ»¸øÎÒÈÏΪ±È½Ï¼òµ¥µÄÃüÁͨ¹ý´ËÃüÁî¿ÉÒÔÒ»ÑÛ¿´³öÄĸöÏ̳߳ÖÓÐÁËÄĸöËø£¬Ä¿Ç°ÔڵȴýÄĸöËø¡£

0:000> !syncblk
Index SyncBlock MonitorHeld Recursion Owning

Thread Info SyncBlock Owner
4 0021fb20 3 1 00221f98 14974c 3 01ae2394

OrderManager.ImportOrder
¡¡ 5 0021fb54 3 1 002234a8 149754 4 01ae23a0

OrderManager.ImportOrder
-----------------------------
Total
5
CCW 0
RCW 0
ComClassFactory
0
Free 0

ÕâÊÇÁ½¸öËø£¬Ò²¾ÍÊÇÁ½¸ö¶ÔÏóͬ²½¿é¡£½øÒ»²½Ê¹ÓÃSOSEX.dllÖеÄ!dlk²é¿´ËÀËøµÄ×Ô¶¯»¯¼ì²éÐÅÏ¢¡£

0:000> !dlk

Examining SyncBlocks... Scanning for

ReaderWriterLock instances...

Scanning for holders of ReaderWriterLock

locks... Scanning for ReaderWriterLockSlim

instances... Scanning for holders of Reade

rWriterLockSlim locks... Examining Critical

Sections... Could not find symbol ntdll!

RtlCriticalSectionList. Scanning for threads

waiting on SyncBlocks... Scanning for

threads waiting on ReaderWriterLock locks...

Scanning for threads waiting on ReaderWriter

LocksSlim locks... Scanning for threads waiting on CriticalSections... *DEADLOCK DETECTED* CLR thread

0x3 holds the lock on SyncBlock 0021fb20 OBJ:01ae2394[OrderManager.ImportOrder] ..

.and is waiting for the lock on SyncBlock

0021fb54 OBJ:01ae23a0[OrderManager.ImportOrder]

CLR thread 0x4 holds the lock on SyncBlock

0021fb54 OBJ:01ae23a0[OrderManager.ImportOrder]

...and is waiting for the lock on SyncBlock

0021fb20 OBJ:01ae2394[OrderManager.ImportOrder]

CLR Thread 0x3 is waiting at System.Threading.Monitor.Enter(System.Object,

Boolean ByRef)(+0x17 Native) CLR Thread 0x4

is waiting at System.Threading.Monitor.Enter

(System.Object, Boolean ByRef)(+0x17 Native)

1 deadlock detected.

×¢ÒâÎÒ¼Ó´ÖµÄÄǶλ°£¬¼ì²âµ½ËÀËø¡£

8.»ñÈ¡DumpÎļþʱµÄÖØÒª×¢ÒâÊÂÏî

ÔÚ»ñÈ¡dumpÎļþ·½ÃæÎÒÒ²Òª·ÖÏíÒ»ÏÂÖØÒªµÄ×¢ÒâÊÂÏî¡£Èç¹û»ñÈ¡dumpÎļþ²»ÕýÈ·µÄ»°ÊÇÎÞ·¨½øÐзÖÎöµÄ£¬»á³öÏÖÈÎºÎÆæ¹ÖµÄÎÊÌâ¡£

µÚÒ»¸ö¾ÍÊÇʹÓÃ64λ»úÆ÷ÉϵÄÈÎÎñ¹ÜÀí»ñÈ¡32λ½ø³ÌdumpÎļþ£¬Õâͨ³£ÊÇ·¢ÉúÔÚ·þÎñÆ÷ÉÏ£¬ÓÉÓÚ·þÎñÆ÷IISĬÈÏµÄÆô¶¯½ø³Ì·½Ê½ÊÇ64λµÄ£¬µ«ÊÇÒ²ÓÐЩÇé¿öÏ»á±ä³É32λµÄ¡£

ͼ19£º

Èç¹û½ø³ÌÊÇÒÔ32λ·½Ê½ÔËÐеģ¬ÄÇôÕâ¸öʱºò»ñÈ¡³öÀ´µÄdumpÎļþÊDz»ºÃ·ÖÎöµÄ£¬´ËʱӦ¸ÃʹÓõ÷ÊÔÆ÷¹¤¾ß½øÐÐ dump µÄ»ñÈ¡¡£»ñÈ¡³öÀ´µÄdumpÎļþºÍ·ÖÎö»úÆ÷Éϵĵ÷ÊÔÆ÷»·¾³²»Ò»ÖµÄÇé¿öÏ»á³öÏÖÈçϼ¸¸ö´íÎó¡£

ͼ20£º

Õâ¸öÎÊÌâÊÇδÄܼÓÔØÕýÈ·°æ±¾µÄ mscordacwks . dll . NETDAC µ÷ʽ×é¼þ¡£

Õâ¸öÎÊÌâÊǵ±Ç° SOS .dll ºÍ .NET ³ÌÐòËùʹÓõÄ.NET°æ±¾²»Ò»Ö£¬Õâ¸öÎÊÌâµÄ³öÏÖÒ»°ã¶¼ÊÇÎÒÃÇͨ¹ý.load xx \xx\SOS.dll £¬ÊÖ¶¯·½Ê½¼ÓÔØµÄ¡£

ͼ22£º

Õâ¸öÎÊÌâ³öÏÖÓкü¸ÖÖ¿ÉÄÜÐÔ£¬¶Ô³£¼ûµÄÎÊÌâ¾ÍÊÇδÄÜʹÓÃÕýÈ·µÄ·½·¨»òÕß¹¤¾ß»ñÈ¡ dump Îļþ£¬µ¼ÖÂdumÎļþ»ñÈ¡µÄ»úÆ÷ºÍ±¾µØµ÷ÊԵĻúÆ÷Õû¸ö»·¾³²»Ò»Ö¡£

9.×ܽá

±¾ÆªÎÄÕ·ÖÏíÎÒ¶Ô.NETÓ¦ÓóÌÐòµ÷ÊÔ·½ÃæÑ§Ï°ºÍʵ¼ùµÄһЩ¾­Ñ飬¹©¹ã´ó²©ÓѲο¼¡£Èç¹ûÏëϵͳµÄѧϰһÏÂÕâ·½ÃæµÄ֪ʶ¿ÉÒԲο¼¡¶.NET¸ß¼¶µ÷ÊÔ¡·Ò»Ê飬´ËÊé·Ç³£µ×²ã£¬¶Ô.NETÔËÐÐʱԭÀí½²µÄºÜ͸³¹£¬¿ÉÒÔ×÷ΪÉîÈëѧϰ.NETµÄÒ»ÃŲο¼Êé¡£

 

   
3168 ´Îä¯ÀÀ       29
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì