2012-11-26 6 views
6

मुझे एक फोर्टन फ़ाइल के डिबगिंग से संबंधित एक प्रश्न मिला। इस प्रकार मैंने इसे डी (*) automaticaly के साथ घोषित किया। हालांकि डिबगिंग और सरणी की निगरानी के दौरान यह केवल सरणी के पहले नंबर को दिखाता है, न कि 60 अन्य। (मैं फोरट्रान 95 कंपाइलर और विजुअल स्टूडियो 2010 का उपयोग करता हूं)फोरट्रान में स्वचालित सरणी लंबाई और विजुअल स्टूडियो डीबग

मैं अभी भी सरणी के सभी चर कैसे देख सकता हूं?


यहाँ ठीक है कोड के लिए एक उदाहरण आता है:

आइए कुछ इनपुट पैरामीटर के आधार पर मुख्य दिनचर्या से एक चर पूर्णांक है।

subroutine abc(ia,a,b,c) 
dimension d(*) 

a = d(ia+1) 
b = d(ia+2) 
c = d(ia+3) 

return 
end 

हालांकि डीबगिंग के लिए यह घ (*)

+0

मुझे समझ में नहीं आया कि आपने वास्तव में क्या किया, मुझे लगता है। हमें कुछ कोड दिखाएं। ध्यान दें कि (*), तथाकथित अनुमानित आकार सरणी किसी भी तरह से सरणी के आकार को स्वचालित रूप से सेट नहीं करते हैं। –

+0

आपको अपनी पोस्ट में हस्ताक्षर शामिल करने की आवश्यकता नहीं है - आपका उपयोगकर्ता कार्ड स्वचालित रूप से जोड़ा जाता है। अधिक जानकारी के लिए [एफएक्यू] (http://stackoverflow.com/faq#signatures) पढ़ें। – Artemix

+0

चूंकि आपको सरणी आकार किसी भी तरह प्रदान करना है (उदा। अतिरिक्त तर्क में), आप समायोज्य सरणी का उपयोग कर सकते हैं। 'वास्तविक डी (*) 'के उपयोग के बजाय' वास्तविक डी (एनएसआईजीई' 'जहां 'nsize' एक' INTEGER' तर्क है, जिसमें आप तत्वों की संख्या में 'डी' का सही आकार पारित करते हैं (' REAL' यहां बस है एक उदाहरण डेटा प्रकार)। फिर डीबगर आपको पूरी सरणी की सामग्री दिखाने में सक्षम होना चाहिए। वास्तविक प्रोग्रामर के लिए भाषा का उपयोग करने के लिए –

उत्तर

1

एक ही रास्ता मैं यह कर पाया है Watch विंडो का उपयोग और सरणी तत्वों के लिए एक घड़ी को जोड़ने के लिए है की endities पता करने के लिए उपयोगी है । मान लीजिए कि आपके सरणी d कहा जाता है, तो मैं पाया है कि निम्न भाव देख सरणी में मान दिखाता है:

d(2)  ! which just shows the 2nd element in the array 
d(1:10) ! which shows the first 10 elements of the array 
d(1:12:2) ! which shows the odd numbered elements of the array from 1 to 11 

और निश्चित रूप से, लंबाई 60 की एक सरणी क्या आप सुझाव है कि इस तरह के रूप के लिए तो है, अभिव्यक्ति

d(61) 

आपको दिखाएगा कि स्मृति स्थान में कौन सा मान है जो उस सरणी पते को इंगित करता है।

बेशक, आपको वास्तव में d(:) के रूप में अपनी सरणी घोषित करनी चाहिए। यदि आप करते हैं, तो वीएस डीबगर सामान्य Locals विंडो में संपूर्ण सरणी दिखाता है।

+0

स्वचालित सरणी स्थानीय सरणी हैं, डमी तर्क नहीं। –

+0

प्वाइंट लिया, व्लादिमीर। –

+0

अन्यथा +1, मान लिया गया आकार सरणी बेहतर होगा, क्योंकि subroutine सरणी आकार जानता है। ओपी ने कोई कोड नहीं दिखाया ताकि कोई केवल अनुमान लगा सके कि वह प्रक्रिया तर्कों के बारे में बात करता है। –

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