2011-01-27 7 views
20

डीबगर के तहत एक प्रक्रिया चलाते समय, मैं एक ही डीबगर में एक बाल प्रक्रिया शुरू करना चाहता हूं।माता-पिता के रूप में एक ही विजुअल स्टूडियो डीबगिंग सत्र में एक बाल प्रक्रिया कैसे शुरू करें, प्रोग्रामेटिक रूप से?

वर्तमान में, मैं

Process.Start("sample.exe"); 

का उपयोग मैं यह कुछ इस तरह होना चाहते हैं:

if (Debugger.IsAttached) 
    // start "sample.exe" in the same debugging session 
else 
    Process.Start("sample.exe"); 

मैं बच्चे प्रक्रिया है कि यह निर्देश देता है Debugger.Launch() कॉल करने के लिए करने के लिए एक झंडा गुजर सकता है, लेकिन वह जीता त्रुटियों को शुरू नहीं करते हैं, और इसके परिणामस्वरूप एक डिबगिंग सत्र होता है जहां कुछ सुविधाएं सक्षम नहीं होती हैं (जैसे संपादन और जारी रखना आदि)। डीबगर प्रक्रिया को सीधे लॉन्च करना बेहतर है।

+1

मैं इस सवाल का शीर्षक संदेह बहुत भ्रामक है - आप, वी.एस. के साथ इस प्रक्रिया को शुरू करने की कोशिश कर रहा है या एक सी # आवेदन ऐसा होता है के साथ कर रहे हैं वीएस का उपयोग करके बनाया जाएगा? –

+0

जो आप पूछ रहे हैं वह कोई समझ नहीं आता है। –

+2

समस्या यह है कि विजुअल स्टूडियो स्वचालित रूप से बॉक्स से बाहर बाल प्रक्रियाओं से जुड़ा नहीं होगा। हालांकि इसके लिए समाधान हैं। –

उत्तर

25

आपको शुरू करने वाली प्रक्रिया के लिए आपको डीबगर संलग्न करना चाहिए। यह किया जा सकता है:

  1. दृश्य स्टूडियो से मैन्युअल रूप से शुरू करने "sample.exe" यह मेनू डीबग का चयन करें> कार्रवाई करने के लिए संलग्न के बाद ..
  2. प्रोग्राम "sample.exe"
  3. Attaching to a Process using VS.NET Automation Model
  4. अंदर डिबगर देते हैं
  5. अद्यतन: आप सेटअप विंडोज़ वातावरण डिबगर संलग्न करने के लिए कर सकते हैं हर बार "sample.exe" शुरू होता है: Launch the Debugger Automatically
  6. कुछ बाहरी उपकरण शायद
  7. 0 (तुम वैसे भी Debugger.Break को कॉल करना होगा)

    if (!Debugger.IsAttached) 
        Debugger.Launch(); 
    Debugger.Break(); 
    

    आप "sample.exe" सत्यापित करने के लिए करने के लिए कुछ पैरामीटर पास करना चाहिए अगर आप डिबगर साथ जोड़ने की आवश्यकता:

यहाँ "sample.exe" संलग्न करने के लिए डिबगर के लिए कोड है।

Process.Start("sample.exe", "Debug=true"); 
+2

यह एक और वीएस लॉन्च करता है। वीएस के एक ही उदाहरण में यह संभव है? – Rohit

+0

अच्छा, इस बारे में कभी सोचा नहीं। एक और वीएस लॉन्च करना एक डिफ़ॉल्ट व्यवहार है। बीटीडब्ल्यू मुझे इसे संशोधित किए बिना डीबग मोड में प्रक्रिया शुरू करने के लिए अच्छा चलना मिला। –

+3

@lazyberezovsky लेकिन इसके लिए नए वीएस खोलने की आवश्यकता है। अगर हम एक ही समाधान के भीतर बाल प्रक्रिया प्रोजेक्ट पहले से मौजूद हैं तो हम उसी विज़ुअल स्टूडियो इंस्टेंस में इसे कैसे कर सकते हैं? धन्यवाद – AFgone

0

कि sample.exe मानते हुए किया जाएगा आप डिबग करना चाहते हैं कोड के लिए मेजबान, आप परियोजना गुणों का उपयोग कर सकते हैं -> डिबग सेटिंग्स - एक बाहरी प्रोग्राम के रूप में कार्रवाई का चयन और sample.exe के लिए पथ प्रदान करते हैं। वीएस इस निष्पादन योग्य को शुरू करेगा और इसे डीबगर संलग्न करेगा।

+3

इसकी एक प्रोग्रामेटिक शुरुआत की आवश्यकता है क्योंकि यह प्रोग्राम तर्क का हिस्सा है। – Rohit

1

आप एकाधिक ऐप्स शुरू करने के लिए अपने समाधान के गुणों को बदल सकते हैं।

पर स्पष्टीकरण है Run Multiple projects

MSDN लेख यहाँ है MSDN Article on running multiple projects

+0

यह एक अच्छा समाधान है यदि सभी प्रक्रियाएं एक ही समय में शुरू होती हैं। हालांकि अगर किसी बच्चे की प्रक्रिया कुछ समय बाद शुरू हो सकती है, तो यह काम नहीं करेगी। –

संबंधित मुद्दे

 संबंधित मुद्दे