ÔÚÕâƪÎÄÕÂÖУ¬ÎÒÃǼٶ¨¶ÁÕßÁ˽âVS»ù±¾µÄµ÷ÊÔ֪ʶ£¬È磺
Ðí¶à¿ª·¢ÈËԱʹÓÃÕâ¸ö¹¦ÄÜÇ¿´óµÄ¹¤¾ß°üÀ´´¦Àíµ÷ÊԻỰ¡£È»¶ø£¬Visual Studioµ÷ÊÔ¹¤¾ßÌṩÁ˸ü¶àµÄ¹¦ÄÜ¡£ÏÂÃæÊÇһϵÁÐVisual Studioµ÷ÊÔЧÂʼ¼ÇÉ¡£×¢Ò⣬ÕâЩÌáʾºÍ¿ì½Ý·½Ê½ÒѾÔÚµÄVisual studio 2019 16.6 EN-US°æ±¾ÖнøÐÐÁËÑéÖ¤£¬Ñé֤ʱVisual studioûÓа²×°À©Õ¹¡£
ʹÓÿì½Ý¼üCtrl+F10£¬Äú¿ÉÒÔÈõ÷ÊÔÆ÷ÔËÐе½¹â±êËùÔÚÐÐλÖá£
ÔÚµ÷ÊÔÔËÐеijÌÐòʱ£¬Í¨¹ýÊó±êÐüÍ£ÔÚµ±Ç°ÐеĴúÂëÉÏʱ£¬³öÏÖÂÌÉ«µÄ·ûºÅ£¬¿ÉÒÔµã»÷´Ë·ûºÅ£¬Ö±½ÓÈöϵãÔËÐе½´Ë´¦¡£
ÔÚµ÷ÊÔÔËÐеijÌÐòʱ£¬Í¨¹ýÊó±êÐüÍ£ÔÚµ±Ç°ÐеĴúÂëÉÏʱ£¬Í¨¹ý°´×¡Ctrl¼üת»»Îª½«´Ë´¦×÷ΪÏÂÒ»ÌõÒªÖ´ÐеÄÓï¾ä¡£ËüÓëͨ¹ýÂÌÉ«¼ýÍ··ûºÅÔËÐе½ÕâÀﲻͬ£¬´Ë¹¦Äܽ«»áÌø¹ýÖмäµÄÓï¾ä£¬Ö±½Ó½«¶ÏµãÌøתµ½´Ë´¦¡£Òò´Ë£¬ÔÚÏÂÃæµÄ¶¯Í¼ÖУ¬ÎÒÃÇ¿ÉÒÔÔÚ¼àÊÓ´°¿ÚÖÐÒýÓÃobjÈÔȻΪnull£¬ÖмäµÄMyClass¹¹Ô캯Êý²¢Ã»Óб»Ö´ÐС£
µ±ÄãÉèÖÃÒ»¸ö·Ç¾²Ì¬µÄÉèÖÃÆ÷Ϊ¶Ïµãʱ£¬µ±ËùÓжÔÏóµÄÊôÐÔµÄÖµ·¢Éú¸ü¸Äʱ´¥·¢¶Ïµã¡£Í¨¹ý¾Ö²¿´°¿Ú£¨¼àÊÓÆ÷´°¿Ú£©ÓÒ¼üµã»÷£ºÖµ¸ü¸ÄʱÖжϲ˵¥£¬µ¥¸ö¶ÔÏóÒ²¿ÉÒÔ»ñµÃÏàͬµÄÐÐΪ¡£
ÏÂÃæµÄ¶¯»ËµÃ÷ÁËÕâ¸ö¹¦ÄÜ£¬Ö»Óе±obj2.Prop·¢Éú±ä»¯Ê±£¬ÃüÖжϵ㣬¶øobj1.Prop·¢Éú±ä»¯Ê±Ã»ÓÐÃüÖжϵ㡣
×¢Ò⣺Êý¾Ý¶Ïµã°ó¶¨µ½»î¶¯¶ÔÏóʱ£¬Ö¼ÔÚµ÷ÊÔÆÚ¼äÆð×÷Óá£Òò´Ë£¬Ò»µ©µ÷ÊÔ¹ý³ÌÍ£Ö¹£¬ÉèÖõĶϵã¾Í»á¶ªÊ§£¬ÔÚÒÔºóµÄµ÷ÊÔ¹ý³ÌÖв»ÄÜÖØÓÃËü¡£
¿ÉÒÔ½«Ìõ¼þ¸½¼Óµ½¶ÏµãÖУ¬ÒԱ㾡ÔÚÌض¨³¡¾°Öд¥·¢Öжϡ£ÔÚÏÂÃæµÄ¶¯Í¼ÖУ¬ÎÒÃÇÔÚÑ»·Öж¨ÒåÌõ¼þi>6µÄ¶Ïµã¡£È»ºóµã»÷¼ÌÐø£¬¿ÉÒÔ¿´µ½Ò»µ©¶ÏµãÍ£Ö¹£¬iµÄֵʵ¼ÊÉϱä³ÉÁË7¡£
ÔÚÓöµ½¶Ïµãʱ£¬Í£Ö¹³ÌÐòÖ´ÐÐʱ×î³£¼ûµÄ²Ù×÷¡£µ«ÊÇ£¬Äã¿ÉÒÔÑ¡ÔñÔÚÊä³ö´°¿ÚÖв»ÖÕÖ¹£¨»ò´øÖÕÖ¹£©´òӡһЩ¸ú×ÙÐÅÏ¢¡£ÏÂÃæµÄ¶¯Í¼ËµÃ÷ÁËÕâÖÖ¿ÉÄÜÐÔ¡£ÎÒÃÇÔÚÊä³ö´°¿ÚÖиú×Ùi´Ó0µ½9µÄÖµ¡£×¢Ò⣺¸ú×ٶϵãÔÚ±à¼Æ÷µÄ¶ÏµãÏÔʾλÖÃÏÔʾΪÁâÐÎÐÎ×´¡£
×¢Ò⣬Ìõ¼þºÍ¸ú×Ù²Ù×÷¶¼¿ÉÒÔÔڶϵãÉÏÖ¸¶¨¡£
ÔÚ¼àÊÓ´°¿ÚÖУ¬Í¨¹ýµ±Ç°Ö´Ðз¶ÎÄÄÚÒýÓõÄÃû³ÆÀ´¸ú×Ù¶ÔÏó¡£µ«ÊÇ£¬µ±ÕâÑùµÄ¸ú×ÙÒýÓó¬³ö×÷ÓÃÓòʱ£¬¼´Ê¹ÔÚÒýÓöÔÏóÈÔ´¦Óڻ״̬ʱ£¬ËüÔÚ¼àÊÓ´°¿ÚµÄÉÏÏÂÎÄÒ²²»°²µÄºÁÎÞÒâÒå²¢ÇÒ±»½ûÓá£
ÔÚÐí¶àÇé¿öÏ£¬ÎÒÃÇÏë¼ÌÐø¸ú×Ù×÷ÓÃÓòÍâ¶ÔÏóµÄ״̬¡£Îª´Ë£¬ÇëÔÚ¼àÊÓ´°¿ÚÖÐÓÒ¼üµ¥»÷´ËÀàÒýÓ㬵¥»÷²Ëµ¥[Make Object ID] ´´½¨¶ÔÏóID(M)£¬²¢ÒªÔÚ¼àÊÓÆ÷ÖÐÌí¼Ó$1(»òÕß$2£¬$3£¬...£¬È¡¾öÓÚÄãÒѾ´´½¨Á˶à¸ö¶ÔÏóID)¡£
ÏÂÃæµÄ¶¯Í¼ÑÝʾÁËÈçºÎ¸ú×Ù×÷ÓÃÓòÍâ¶ÔÏóµÄÊôÐÔ»ñÈ¡Æ÷µÄ״̬£¬¸ÃÊôÐÔ»ñÈ¡Æ÷ÒÔ×Ö·û´®µÄÐÎʽ·µ»Øʵ¼ÊµÄÈÕÆÚʱ¼ä¡£ËüºÜºÃµØÏÔʾÁ˵±ÒýÓÃobjÔÚFct()ÉÏÏÂÎÄÖг¬³ö×÷ÓÃÓòʱ£¬Òª¹Û¿´µÄobjÏ±»½ûÓ㬶ø$1ÈÔÈ»»á»ñµÃ¸üС£
º¯Êý·µ»ØµÄÖµÓÐʱÔÚÔ´´úÂëÖб»ºöÂÔ£¬»òÕßÓÐʱÕâ¸öÖµÔÚµ÷ÊÔʱÎÞ·¨±»ÏÔʾµÄ·ÃÎÊ¡£
ÕâÑùµÄ·µ»ØÖµ¿ÉÒÔÏÔʾÔÚµ÷ÊÔ->´°¿Ú->×Ô¶¯´°¿ÚÖС£Î±±äÁ¿$ReturnValueÒ²¿ÉÒÔÔÚ¼´Ê±´°¿ÚºÍ¼àÊÓ´°¿ÚÖÐʹÓã¬ÒÔ·½±ã²é¿´×îºóÒ»¸öº¯Êýµ÷Óõķµ»ØÖµ¡£
×¢Ò⣬²Ëµ¥µ÷ÊÔ->´°¿Ú->×Ô¶¯´°¿Ú½öÔÚVisual Studioµ÷ÊÔÆ÷¸½¼Óµ½½ø³Ì²¢ÇÒ³ÌÐò±»µ÷ÊÔÆ÷ÔÝͣʱ¿ÉÓá£
´ÓVisual Studio 2017¿ªÊ¼£¬ÖØи½¼Óµ½½ø³ÌShift+Alt+P¹¤¾ß±»Ìá³ö£¬²¢Çҷdz£·½±ã¡£½«µ÷ÊÔÆ÷¸½¼Óµ½Ä³¸ö½ø³Ìºó£¬Visual Studio»á¼ÇסËü£¬²¢½¨Ò齫µ÷ÊÔÆ÷ÖØи½¼Óµ½Í¬Ò»½ø³Ì¡£Ð±ÌåÒ²Ò»Ñù£¬ÒòΪÕâÀïÓÐÒ»¸ö¹ØÓÚ½ø³Ì±êʶµÄÆô·¢Ê½·½·¨£º
ÖØи½¼Óµ½½ø³ÌÒ²ÊÊÓÃÓÚÉæ¼°¶à¸ö½ø³ÌµÄµ÷ÊԻỰ¡£ÔÚÕâÖÖÇé¿öÏ£¬Visual Studio»á³¢ÊÔʹÓÃÉÏÊöÏàͬµÄÆô·¢Ê½·½·¨À´²éÕÒËü¸½¼Óµ½µÄËùÓнø³Ì¡£
ÓÐʱ£¬ÔÚ¼´Ê±´°¿Ú»ò¼àÊÓ´°¿ÚÖÐÆÀ¹À±í´ïʽʱ£¬Ä³Ð©×´Ì¬»á¸ü¸Ä¡£ÕâÖÖÐÐΪͨ³£Ê±²»Ï£Íû·¢ÉúµÄ¡£Äã²»Ïë½ö½öÒòΪÐèÒªÆÀ¹À±í´ïʽµÄÖµ¶øÆÆ»µµ÷ÊÔ³ÌÐòµÄ״̬¡£ÕâÖÖÇé¿ö±»³ÆΪHeisenbug£¬¸ÃÊõÓïʱÎïÀíѧ¼ÒWerner HeisenbergµÄË«¹ØÓËüÊ×ÏȶÏÑÔÁËÁ¿×ÓÁ¦Ñ§µÄ¹Û²ìÕßЧӦ£¬¸ÃÏÖÏóÖ¸³ö£¬¹Û²ìϵͳµÄÐÐΪ²»¿É±ÜÃâµÄ»á¸Ä±äÆ÷״̬¡£
ΪÁ˱ÜÃâ¸ü¸ÄÈκÎ״̬£¬Äã¿ÉÒÔÔÚ±í´ïʽºóÃæ¼ÓÉÏnse(No-Side-Effect)¡£ÏÂÃæµÄ¶¯Í¼ËµÃ÷ÁËÕâÖÖ¿ÉÄÜÐÔ£¨ÔÚ¼àÊÓ´°¿ÚÖмàÊÓStateµÄÖµÊÇ·ñÓб仯£©¡£
ÏÂÃæÕâÖÖ¶¯Í¼ÊÇnseÔÚ¼àÊÓ´°¿ÚµÄʹÓá£ÓÉÓÚSideEffectFct()Ëù¹Û²ìµÄÏîÖÐÓÐRefreshÆÀ¹À°´Å¥£¬ËùÒÔ´ËʾÀý±ÈÇ°Ò»¸öʾÀý¸ü¼òµ¥¡£
µ÷ÊÔ¶àÏß³ÌÓ¦ÓóÌÐòÊÇÓÐÃûµÄ¸´ÔÓ¡£Ï£ÍûÔÚÔ´ÂëÖÐÏÔʾḬ̈߳´Å¥ÄÜÌṩºÜ´óµÄ°ïÖú¡£ËüÔÚ±à¼Æ÷µÄ×ó²à±ßÀ¸ÒýÈë±ê¼Çͼ±ê£¬ÒÔ¸ú×ÙÆäËûÏ̱߳»ÔÝÍ£µÄλÖá£Õâ¸ö±ê¼Ç¿ÉÒÔÓÃÀ´ÏÔʾÏß³ÌID,²¢×îÖÕÇл»µ½ÁíÒ»¸öÏ̡߳£×¢Ò⣺Èç¹ûÖÁÉÙÁ½¸öÏß³ÌÔÚͬһλÖÃÔÝÍ££¬Ôò»áÏÔʾ²»Í¬µÄ±ê¼Ç·ûºÅ¡£
¸ü¶àµ÷ÊÔ¶àÏß³ÌÓ¦ÓóÌÐòµÄ¼¼ÇÉ¿ÉÒÔÔÚÕâ¸ö΢ÈíÎĵµÖÐÕÒµ½£ºGet started debugging multithreaded applications (C#, Visual Basic, C++)
https://docs.microsoft.com/en-us/visualstudio/debugger/get-started-debugging-multithreaded-apps?view=vs-2019
ÏÂÃæÊÇÕâ¸öÑÝʾµÄÔ´´úÂ룬Èç¹ûÄãÏëÑÝʾËü£¬¿ÉÒÔ½øÐвο¼£º
using?System;?using?System.Threading;??class?Program?{?static?void?Main()?{?for?(int?i=0;?i<?5;?i++)?{?//?Avoid?capturing?a?loop?variable?in?the?lambda?below?int?j?=?i;?//?So?2?thread?are?blocked?on?'0'?case?if?(j?==?1)?{?j?=?0;?}??ThreadPool.QueueUserWorkItem(delegate?{?Method(j);?});?}?Thread.Sleep(60000);?}?static?void?Method(int?id)?{?switch(id)?{?case?0:?Thread.Sleep(60000);?break;?case?1:?Thread.Sleep(60000);?break;?case?2:?Thread.Sleep(60000);?break;?case?3:?Thread.Sleep(60000);?break;?case?4:?Thread.Sleep(60000);?break;?}?}?}?
ÎÒÃǾ³£ÒÀÀµÒ»Ð©ºÚºÐ×é¼þ£ºÎÒÃÇûÓÐÔ´´úÂëµÄ×é¼þ¡£
µ«ÊÇ£¬ÔÚµ÷ÊÔ¸´ÔÓÐÐΪʱ£¬¹Û²ìÉõÖÁµ÷ÊÔÒýÓõĺںÐ×é¼þÒýÓõÄÂß¼¡£Õâ¾ÍÊÇΪʲô´Ó16.5°æ±¾¿ªÊ¼£¬Visual Studio 2019¿ÉÒÔ´Ó±àÒëºÃµÄ³ÌÐòÖÐÉú³ÉһЩԴ´úÂë¡£ÕâÑùµÄÔ´´úÂëÊÇ¿ÉÒÔµ÷ÊԵġ£Õâ¸öÌØÐÔÊÇ»ùÓÚ¿ªÔ´Èí¼þ£¨OSS£©¹¤³Ì£ºILSpy£¨https://github.com/icsharpcode/ILSpy£©¡£
·´±àÒë²Ëµ¥¿ÉÒÔÔÚÄ£¿é´°¿ÚµÄ×é¼þÓÒ¼ü²Ëµ¥(ÈçÏÂÃæµÄ¶¯Í¼Ëùʾ)ºÍSource Not Found»òNo Symbols Loaded¶Ô»°¿òÖиø³ö¡£
½«IL´úÂë·´±àÒëΪԴ´úÂë²»¿ÉÄÜÊÇÍêÃÀµÄ£¬ÒòΪһЩԴ´úÂëÐÅÏ¢ÔÚ±àÒëʱ¶ªÊ§ÁË¡£Òò´Ë£¬Õâ¸öÌØÐÔÓÐһЩÏÞÖÆ£¬ÔÚÕâ¸ö¹Ù·½ÎĵµµÄ×îºó»á½âÊÍ£ºGenerate source code from .NET assemblies while debugging
https://docs.microsoft.com/en-us/visualstudio/debugger/decompilation?view=vs-2019
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ