2009-12-18 18 views
5

मैं जानना चाहता हूं कि कोई आदेश या उपकरण है जिसका उपयोग प्रक्रिया शुरू करने के लिए किया जा सकता है और फिर इसे तुरंत रोक दें।प्रक्रिया कैसे शुरू करें और फिर इसे तुरंत रोक दें?

मुझे इस फ़ंक्शन की आवश्यकता है ताकि मेरे पास डीबगर संलग्न करने का समय हो। मैंने विजुअल स्टूडियो/डीब्यूजएक्स फीचर की कोशिश की है, लेकिन कार्यक्रम का व्यवहार बदल गया। इसलिए मुझे इसे संलग्न करने और डीबग करने के लिए अन्य तरीका ढूंढना होगा।

धन्यवाद।

+2

मुझे संदेह है कि वास्तविक समस्या यह है कि आपको रेस हालत या अन्य समरूपता समस्या मिली है, और इसलिए इसे डीबगर के तहत चलाने से समस्या स्वयं को छिपाने का कारण बनती है। –

+0

मेरी समस्या के लिए उपयोगी टिप्पणियां प्रदान करने के लिए सभी को धन्यवाद। क्योंकि मैं प्रोग्राम के लिए प्लग-इन विकसित कर रहा हूं, मैं होस्ट प्रोग्राम के स्रोत कोड को संशोधित नहीं कर सकता। इसलिए sharptooth और nobugz द्वारा प्रदान किए गए समाधान मेरी समस्या के लिए अधिक उपयुक्त होंगे। मुझे लगता है कि हमें आर सैमुअल क्लैचको और रायटिम के समाधान का उपयोग करने के लिए मेजबान कार्यक्रम को संशोधित करना होगा। – askalee

उत्तर

4

आप CREATE_SUSPENDED ध्वज के साथ CreateProcess() का उपयोग कर सकते हैं। यह मुख्य धागे निलंबित के साथ प्रक्रिया शुरू कर देगा। फिर आप संलग्न होने के बाद ResumeThread() को कॉल करते हैं।

0

Sleep() को पहले विवरण के रूप में कॉल करने के बारे में कैसे करें।

+0

यह ज्यादातर बार काम करेगा। लेकिन अगर समस्या WinMain() कहने से पहले कुछ हो रही है तो यह बेकार होगा। – sharptooth

0

तुम भी कोड में

System.Diagnostics.Debugger.Break(); 

के लिए एक कॉल जोड़ सकते हैं। यह कार्यक्रम को निलंबित कर देगा और फिर आप जिस डीबगर का उपयोग करना चाहते हैं उसे चुनने के लिए कहेंगे। फिर आप चल रहे विजुअल स्टूडियो इंस्टेंस से संलग्न कर सकते हैं। यदि आप पहले से ही डीबगर से चल रहे हैं, तो यह बस टूट जाएगा जैसे कि यह ब्रेकपॉइंट मारा होगा।

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