2010-05-03 17 views
25

के अंदर चल रहे कंसोल ऐप के लिए प्रक्रिया को संलग्न करें सीएमडी विंडो से चल रहे कंसोल एप्लिकेशन के लिए आप "प्रक्रिया से कनेक्ट करें ..." और F5 द्वारा लॉन्च नहीं किए गए हैं? कारण मैं पूछता हूं क्योंकि एप्लिकेशन कमांड लाइन तर्क लेता है और मैं एक वास्तविक अनुभव चाहता हूं।डिबगिंग: cmd.exe

मैंने CMD.exe को भी संलग्न किया है, लेकिन कोई भाग्य नहीं है, या Console.ReadKey() का उपयोग करके ब्रेक-पॉइंट सेट करने के साथ भी कोई भाग्य नहीं है। मैं यहाँ एक नुकसान पर तरह का हूँ।

क्या यह संभव है?

+3

बस अगर आपको पता नहीं है, तो आप F5 दबाते समय अपने ऐप पर विज़ुअल स्टूडियो में कमांड लाइन तर्क सेट कर सकते हैं। प्रोजेक्ट पर राइट-क्लिक करें -> गुण -> डीबग -> स्टार्ट विकल्प -> कमांड लाइन तर्क। –

+0

@ जैकोब जी, हाँ, मैं यह कर सकता हूं, लेकिन यह वास्तव में बेकार है और यदि मैं तर्क बदलना चाहता हूं, तो मुझे संवाद – Chris

+2

से मेल करना होगा cmd.exe से जुड़ा हुआ बेकार है, क्योंकि आपका कंसोल एप्लिकेशन अपनी प्रक्रिया में चलता है, नहीं cmd.exe –

उत्तर

30

आप कुछ विकल्प हैं:

  • "डीबग -> कमांड लाइन तर्क" उपयोग दृश्य स्टूडियो में विकल्प;
  • "डीबग -> प्रक्रिया करने के लिए संलग्न करें" का उपयोग करें और अपनी प्रक्रिया ढूंढें; यह cmd.exe नहीं है, लेकिन निष्पादन योग्य नाम "MyProject.exe" जैसी प्रक्रिया है। आप प्रक्रिया आईडी को आसानी से ढूंढने के लिए Process Explorer या "ट्री व्यू" समर्थन वाले किसी अन्य कार्य प्रबंधक का उपयोग कर सकते हैं - बस अपने cmd.exe द्वारा शुरू की गई प्रक्रियाओं को देखें।
  • डीबगर। ब्रेक() को अपने कोड में रखें - जब यह विधि निष्पादित की जाती है, तो सिस्टम आपको एक संवाद लॉन्च करेगा जो आपको यह चुनने के लिए कहेंगे कि विजुअल स्टूडियो का किस प्रकार डीबगिंग के लिए उपयोग करना है (आप अपनी परियोजना के साथ पहले से ही एक खोल सकते हैं) ।
+0

उत्कृष्ट - बस एक कंसोल जोड़ा। ReadKey() पहली पंक्ति के रूप में और यह एक आकर्षण की तरह काम किया। – else

2

यह संभव है, निश्चित है। इन दोनों में से एक आज़माएं:

  1. प्रक्रिया शुरू करें, फिर डीबग-> प्रक्रिया को संलग्न करें और ढूंढें। इसे देखने के लिए आपको रीफ्रेश करना पड़ सकता है।
  2. यदि संभव हो तो कोड में "डीबगर। ब्रेक()" कथन जोड़ें; जो स्वचालित रूप से टूट जाएगा (लेकिन इसे निकालना सुनिश्चित करें या इसे प्रीप्रोसेसर निर्देशों से घिराएं ताकि यह उत्पादन कोड में न हो)।
0

परियोजनाओं में "डीबग" अनुभाग में "कमांड लाइन तर्क:" के लिए एक टेक्स्टबॉक्स है। जब वीएस डीबगर सी # प्रोग्राम शुरू करता है, तो यह उन तर्कों को प्रक्रिया में पास कर देगा जैसे कि प्रोग्राम शुरू किया गया था, उन तर्कों के साथ कमांड लाइन बनाते हैं।

विकल्प कमांड लाइन डीबगर का उपयोग करना है। यहां कुछ विकल्प हैं, लेकिन सभी ईमानदारी से वे शायद वीएस के बजाय आप जो नहीं करना चाहते हैं, तब तक आप कुछ वास्तव में बालों वाले डिबगिंग परिदृश्यों में नहीं आ रहे हैं। आप उन्हें बाहर की जाँच में रुचि रखते हैं, वहाँ इस में एक अच्छा सारांश तो जवाब:

तुम भी जल्दी अपने प्रारंभ में System.Diagnostics.Debugger.Break() के लिए एक कॉल डालने की कोशिश कर सकते हैं techique - अगर कार्यक्रम एक डीबगर के तहत चल रहा है, यह टूट जाएगा, यह एक डीबगर के तहत नहीं चल रहा है, आपको पूछा जाना चाहिए कि क्या आप एक संलग्न करना चाहते हैं। आप कॉन्फ़िगरेशन फ़ाइल या पर्यावरण परिवर्तनीय सेटिंग के आधार पर सशर्त रूप से कॉल कर सकते हैं ताकि यदि आप वास्तव में इसमें रूचि रखते हैं तो आपको ब्रेक मिल जाएगा (कुछ हद तक घुसपैठ, लेकिन बहुत बुरा नहीं)।

1

जैसा कि अन्य ने कहा है, आप प्रोजेक्ट के भीतर से स्ट्रैटअप कमांड लाइन तर्क निर्दिष्ट कर सकते हैं और केवल विजुअल स्टूडियो के भीतर डिबगिंग शुरू कर सकते हैं। और cmd.exe नहीं -

आप अभी भी चल रहे ऐप्लिकेशन को संलग्न करने के लिए चाहते हैं, आप MyApp.exe (exe कि बिन \ डिबग निर्देशिका का संकलन किया जाता है जो कुछ भी अपने आवेदन में कहा जाता है) के लिए डिबगर संलग्न करने के लिए की जरूरत है। Cmd.exe से जुड़ा यह कमांड प्रक्रिया से जुड़ा हुआ है, न कि आपके आवेदन की प्रक्रिया।

4

बल्कि वी.एस. जीयूआई भूलभुलैया का उपयोग करने से कमांड लाइन से डिबग करने के लिए:

  • लॉन्च दृश्य स्टूडियो कमान देने के लिए प्रेरित

  • प्रकार vsjitdebugger /? जो आप की तरह आदेश उदाहरण देता है:

ग:>vsjitdebugger [AppName] [args]: लॉन्च निर्दिष्ट निष्पादन और डीबगर से संलग्न

  • टाइपिंग tlist या कार्यसूची आपको मौजूदा प्रक्रियाओं को जोड़ने के लिए पीआईडी ​​देगा। उदाहरण:

ग:> कार्यसूची | लगता है/मैं "वेब"

0

बस "HKEY_LOCAL_MACHINE \ सॉफ्टवेयर \ Microsoft \ Windows NT \ CurrentVersion \ छवि फ़ाइल निष्पादन विकल्प" में अपने exe के नाम के लिए एक रजिस्ट्री प्रविष्टि जोड़ने, उसके तहत आने वाले के साथ "vsjitdebugger.exe" मूल्यवान एक "डिबगर" कुंजी जोड़ने, आप एक संवाद पॉप अप देख सकते हैं जब आप exe शुरू होने पर डीबग करने के लिए एक वीएस संस्करण चुनने के लिए कहते हैं।

अधिक जानकारी के लिए एमएसडीएन "How to: Launch the Debugger Automatically" देखें।

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