2010-07-01 8 views
15

मुझे बड़ी फोर्ट्रान परियोजना में बड़ी संख्या में स्रोत फ़ाइलों के साथ फेंक दिया गया है।मैं फोरट्रान (9 0 या बाद के) स्रोत कोड को कैसे देख सकता हूं, उदा। ग्राफविज़ का उपयोग कर?

मुझे इस परियोजना में योगदान करने की आवश्यकता है और यह समझदार प्रतीत होता है कि मैं पहले स्रोत को समझता हूं।

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

लेकिन क्या कोई सॉफ़्टवेयर से अवगत है जो फोर्ट्रान 9 0 कोड के लिए ऐसा कर सकता है?

उत्तर

9

आप तो पैसा है Understand for Fortran को देख के लायक है, तो [फोरट्रान मदद के लिए interwebs सर्च कर रहे हैं के रूप में आप अंत दर्दनाक सर्वव्यापक FORTRAN 77 करने के लिए खोज अंतर-मकड़ी के जालों धन्यवाद एक असली दर्द है]। यदि आपके पास पैसा नहीं है लेकिन जल्दी से काम करना चाहते हैं तो आपको सॉफ़्टवेयर के परीक्षण डाउनलोड के साथ मिल सकता है।

एक स्थिर कॉल ग्राफ के लिए, मुझे कभी भी एक मुफ्त टूल को समझने के रूप में उपयोगी नहीं मिला है; किसी भी मुफ्त उपकरण को अकेले उपयोगी बनाने के लिए मुश्किल है। मैं खुद को लिखूंगा लेकिन बाजार छोटा होगा :-(

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

और मुझे यह भी जोड़ना चाहिए, हालांकि यह भी जोड़ना चाहिए मैंने कभी भी उपयोग नहीं किया है, Callgrind उपयोग किया जा सकता है।

+0

प्रतिक्रिया के लिए धन्यवाद। हाँ, फोरट्रान के लिए समझने का रास्ता प्रतीत होता है। – EMiller

20

मैं doxygen की अनुशंसा करता हूं, जो स्वचालित रूप से दस्तावेज़ उत्पन्न करता है स्रोत कोड से आयन (और मुफ़्त है)। आम तौर पर आप अपने कार्यों और चर का वर्णन करने वाली टिप्पणियों में कुछ मार्कअप जोड़ते हैं। हालांकि, आप केवल अनियंत्रित स्रोत फ़ाइलों पर डॉक्सिजन चला सकते हैं, बशर्ते आप कॉन्फ़िगरेशन फ़ाइल में EXTRACT_ALLYES पर सेट करें, और इसे अपने सभी कार्यों के लिए रिलेशनशिप आरेख बनाएं (यानी यह फ़ंक्शन इन कार्यों को कॉल करता है और इन अन्य कार्यों द्वारा कॉल किया जाता है)।

आपको चित्र उत्पन्न करने के लिए ग्राफ़विज़ स्थापित करने की आवश्यकता है और HAVE_DOT विकल्प कॉन्फ़िगरेशन फ़ाइल में YES पर सेट है।

अधिक जानकारी के लिए graphs and diagrams के लिए डॉक्सिजन दस्तावेज़ देखें और example class documentation उत्पन्न आउटपुट के उदाहरण के लिए।

संपादित: बेशक फोरट्रान के लिए आप विन्यास फाइल में YES करने के लिए OPTIMIZE_FOR_FORTRAN विकल्प स्थापित करना चाहिए।

+0

यह विधि 'डॉक्सिजन' और 'ग्राफविज़' के लिए उपलब्ध उबंटू पैकेज का उपयोग करके मेरे लिए काम करती है। क्रिस का विकल्प 'Doxyfile' कॉन्फ़िगरेशन फ़ाइल में मिलता है। – ryanjdillon

+1

'doxygen-ui' पैकेज में एक 'डॉक्सिविज़र्ड' प्रोग्राम भी है जो चीजों को बहुत आसान बनाता है – naught101

+0

मैंने दोनों, डॉक्सिजन और समझने की कोशिश की, और मुझे कहना होगा कि डॉक्सिजन एक शानदार काम करता है। कॉन्फ़िगरेशन फ़ाइल में मैं उपयोग करता हूं: HAVE_DOT = हाँ, CALL_GRAPH = हाँ, CALLER_GRAPH = हाँ, और अंत में EXTRACT_ALL = YES उपनिर्देशिका में * सभी * फोरट्रान फ़ाइलों को शामिल करने के लिए। – netzpurist

1

आप Valgrind के भीतर से callgrind उपयोग कर सकते हैं:

valgrind --tool=callgrind [your program] 

यह एक callgrind.out.[pid] फ़ाइल का उत्पादन करेगा। यदि आप ऑप्टिमाइज़ेशन के बिना और डीबग झंडे के बिना अपने प्रोग्राम को संकलित करते हैं तो यह सबसे अच्छा काम करता है।

फिर आप डेटा देखने के लिए विकल्पों में से एक जोड़ी है:

  1. grof2dot के साथ एक .dot फाइल करने के लिए callgrind उत्पादन कन्वर्ट, और फिर xdot के साथ देख सकते हैं या यह Graphviz के साथ एक स्थिर ग्राफ में बदलने का ।
  2. इसे सीधे Kcachegrind (स्रोत विश्लेषण, और कॉल ग्राफ़ सहित) देखें।
संबंधित मुद्दे