2012-03-27 17 views
17

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

System.Diagnostics.Debugger.Launch(); 

जब इस लाइन मारा जाता है यह एक डिबगर संलग्न करने के लिए संकेत देगा प्रभावी रूप से आप के लिए इंतज़ार:

+0

@ हाराल्डडच यहां एक महान समाधान का वर्णन करता है: http://stackoverflow.com/questions/19512041/remote-debugging-how-to-start-the-debugging-process-on-a-different-computer – eFloh

उत्तर

13

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

+0

अच्छा उत्तर। धन्यवाद! – Tim

+1

यह 'System.Diagnostics.Debugger.Launch(); 'नहीं होना चाहिए? यह कोई तर्क नहीं है, जिसमें कोई तर्क नहीं है, और इसे किसी भी कथन की तरह अंत में अर्धविराम की आवश्यकता है। –

3

विजुअल स्टूडियो प्रो 2010 के साथ एक .NET 4 अनुप्रयोग का निर्माण, यह मेरे लिए काम नहीं करता है।

https://connect.microsoft.com/VisualStudio/feedback/details/611486/debugger-launch-is-now-crashing-my-net-application-after-upgrading-to-net-4-0

ए (कुछ हद तक hacky) पल जो मेरे लिए काम कर रहा है के लिए वैकल्पिक हल है सिर्फ एक संदेशबॉक्स (ऊपर फेंक एप्लिकेशन होना) सही शुरू में:

जाहिर है यह एक ज्ञात बग है मुख्य विंडो initialisation की:

public partial class MainWindow : Form 
{ 
    public MainWindow() 
    { 
     // To allow you time to attach a remote debugger ... 
     MessageBox.Show("Please attach debugger"); 

     InitializeComponent(); 
     ... 

अब आप अपने खाली समय में वी.एस. दूरस्थ डीबगर लगाना और फिर संदेश बॉक्स में ठीक हिट कर सकते हैं।

बदसूरत लेकिन कार्यात्मक।

7

समाधान

System.Diagnostics.Debugger.Launch 

मेरे लिए या तो काम नहीं किया। हालांकि, मैं हल करने के लिए निम्नलिखित मेरी समस्या अपने आवेदन में लेखन शुरू में कामयाब रहे:

while (!System.Diagnostics.Debugger.IsAttached) 
    System.Threading.Thread.Sleep(100); 

इस तरह आवेदन जब तक एक डिबगर संलग्न हो इंतजार कर रहे होंगे।

+0

वास्तव में एक अच्छा समाधान है। '' '#ifdef DEBUG''' और' '' endif'' में पैक किया गया है, यह रिलीज बिल्ड को परेशान नहीं करता है और जब मैं अपनी मशीन पर डीबग करता हूं तो बेकार ढंग से काम करता है। लेकिन जब मुझे दूरस्थ रूप से डीबग करने की ज़रूरत है तो यह बस इंतजार कर रहा है। धन्यवाद! – ecth

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