2009-06-12 11 views
17

मुझे पता है कि मैं Process.Start() के साथ कोड में एक प्रक्रिया शुरू कर सकता हूं। क्या उस प्रक्रिया में डीबगर संलग्न करना भी संभव है?मैं विजुअल स्टूडियो में डीबगर को एक प्रक्रिया कैसे संलग्न करूं?

कोड प्रति से से नहीं, लेकिन ऐसा करने का एक तरीका है?

उत्तर

22

आप का उपयोग कर attach to a running process कर सकते हैं। यदि यह एक वेब एप्लिकेशन है, तो आप इसे aspnet_wp.exe या w3wp.exe से जोड़कर संलग्न कर सकते हैं।

3

विजुअल स्टूडियो में टूल्स क्लिक करें | प्रक्रिया करने के लिए संलग्न करें। फिर उपयुक्त सेवा का चयन करें।

2

आप इसे अपने नमक के लायक किसी भी डीबगर में कर सकते हैं।

विजुअल स्टूडियो में आपकी आवश्यकताओं के अनुरूप होना चाहिए।

यदि आपको थोड़ा अधिक उन्नत नियंत्रण की आवश्यकता है, तो OllyDbg, जो एक डिस्सेबलर है, का प्रयास करें, ताकि आप वास्तव में असेंबली स्तर पर अपने प्रोग्राम में हेरफेर कर सकें। यह आपको पूर्ण नियंत्रण देगा, लेकिन यह जानकारी अधिभार भी हो सकता है।

+0

WinDbg इस्तेमाल किया जाना चाहिए। एसओएस के साथ WinDbg वास्तव में .NET के लिए OllyDbg trumps। OllyDbg में अधिक "विश्लेषण" विशेषताएं हैं लेकिन WinDbg यहां अधिक उपयुक्त है - जहां ओपी शायद अपनी प्रक्रिया को डीबग करना चाहता है – kizzx2

1

विजुअल स्टूडियो 2015 में, मेनू में 'प्रक्रिया करने के लिए संलग्न करें' पर क्लिक करें। वैकल्पिक रूप से, एक शॉर्टकट कुंजी Ctrl + Alt + P है।

0

आप इसे अपने कोड में कर सकते हैं।

public static void Attach(DTE2 dte) 
     { 
      var processes = dte.Debugger.LocalProcesses; 
      foreach (var proc in processes.Cast<EnvDTE.Process>().Where(proc => proc.Name.IndexOf("YourProcess.exe") != -1)) 
       proc.Attach(); 
     } 

     internal static DTE2 GetCurrent() 
     { 
      var dte2 = (DTE2)Marshal.GetActiveObject("VisualStudio.DTE.12.0"); // For VisualStudio 2013 

      return dte2; 
     } 

उपयोग:

Attach(GetCurrent()); 
संबंधित मुद्दे