2010-09-06 13 views
16

मैंने वीएस -2010 और एफ # इंटरैक्टिव का उपयोग करके एल्गोरिदम में कुछ विचारों की खोज शुरू कर दी है।मैं एफ # इंटरैक्टिव में ब्रेकपॉइंट्स का उपयोग कैसे करूं?

इसलिए, मैंने DebugScript.fsx बनाया है, मैं वहां कुछ कोड लिखता हूं और अंत में इसे परीक्षण करने के लिए इसे F # Int पर भेजता हूं।

कुछ पल में मुझे एक बग पकड़ने की आवश्यकता है। लेकिन मैं भी एक साधारण for पाश में एक ब्रेकप्वाइंट नहीं लगा सकेंगे:

for i in stringarray do 
    printfn "%s" i 

जब मैं प्रेस F9 एक ब्रेकपाइंट सेट करने के लिए, वी.एस. एक चेतावनी संकेत के साथ एक लाल गोला दिखाई। इसके लिए संकेत है "ब्रेकपॉइंट वर्तमान में हिट नहीं होगा"।

निश्चित रूप से, मैं खुले डीबग मेनू था -> ... संसाधित करने के लिए संलग्न -> पहले से

मैं पाश अंदर Debugger.Break() रखने की कोशिश की Fsi.exe, लेकिन वह केवल लाइन जहां डिबगर बंद हो जाता है, मुझे कोई विकल्प नहीं दे रही है लूप के अंदर डीबगिंग लाइनों के साथ आगे बढ़ने के लिए। मैं भी, जहाँ तक मुझे पता के रूप में उपलब्ध किसी भी स्थानीय चर :(

नहीं है शायद मैं कुछ स्पष्ट याद कर रहा हूँ?

+0

'Debugger.Break()' काम करता है जब मेरे लिए –

उत्तर

2

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

1

KVB के जवाब के अलावा:। एक कह सकते हैं कि एफ # इंटरएक्टिव पहले से ही डिबगर का एक प्रकार है आप लाइन (या क्षेत्र के आधार पर क्षेत्र) द्वारा कोड लाइन फ़ीड कर सकते हैं और देखते हैं। इंटरमीडिएट परिणाम। आप एफ # इंटरएक्टिव कंसोल में मूल्यांकन करके बाइंडिंग के मूल्य का भी निरीक्षण कर सकते हैं।

0

इंटरैक्टिव i इसे कोड के छोटे टुकड़े खिलाकर और मध्यवर्ती परिणामों का मूल्यांकन करने के लिए, इसे माइक्रो-यूनिट परीक्षण के रूप में सोचें। मुझे f # के साथ नूनिट का उपयोग करने में कुछ सफलता मिली है, यह सी # के मुकाबले अलग नहीं है, आप अपने टेस्टफिक्चर को सजाने और उसी तरह से परीक्षण मामलों को लोड करते हैं और यह लोड हो जाएगा। मेरे पास मिश्रित-मोड असेंबली के साथ कुछ समस्याएं थीं जहां नूनिट बार्फ़ होगा, लेकिन कुल मिलाकर, कोड के एक टुकड़े का परीक्षण करने के लिए यह बेहतर तरीका है। भी, मुझे इंटरैक्टिव, केवल मॉड्यूल के लिए नामस्थान भेजने का कोई तरीका नहीं मिला।

11

आप अपनी स्क्रिप्ट का हिस्सा कोड को डीबग नहीं कर सकते हैं, लेकिन आप वर्णन करते हुए Fsi.exe प्रक्रिया में डीबगर को जोड़कर अपनी स्क्रिप्ट में संदर्भित बाहरी कोड को डीबग कर सकते हैं। तो अगर आप वास्तव में एक सांत्वना प्रोग्राम लिखने के लिए इच्छुक के बिना इंटरैक्टिव खिड़की से डिबग करने के लिए चाहते हैं, आप समारोह के साथ एक FS फ़ाइल डिबग करने के लिए बना सकते हैं और: डिबगर

  1. संलग्न

  2. या तो

    • संदर्भ #load (*) से FS फ़ाइल
    • एक पुस्तकालय के रूप में कोड संकलन और #R
    • साथ जिसके परिणामस्वरूप DLL संदर्भ
  3. सेट एक ब्रेकपाइंट

  4. कॉल एक स्क्रिप्ट

(*) मेरी वी.एस. अंतिम स्थापना पर काम किया से समारोह, लेकिन मैं वी.एस. शेल के साथ एक और मशीन पर पुन: पेश करने में सक्षम नहीं किया गया है स्थापित

8
VS2015 में

अब और अधिक आसान है: उपकरण> विकल्प> एफ # उपकरण में -> एफ # interactive-> डिबगिंग -> फिर अपने इंटरैक्टिव से रीसेट स्क्रिप्ट डीबगिंग = सच

सक्षम करें ssion और आप डिबग प्रेस CTRL + ALT + डी करना चाहते हैं और ("इंटरैक्टिव में डिबग" स्रोत फ़ाइल पर या राइट क्लिक करें और चुनें) हमेशा की तरह

के रूप में आदेश भेज

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