से कंट्रोल फ्लो ग्राफ प्राप्त करना मैं ansi c अनुप्रयोगों का परीक्षण करने के लिए टूल बना रहा हूं। बस कोड लोड करें, नियंत्रण प्रवाह ग्राफ देखें, परीक्षण चलाएं, हिट किए गए सभी कशेरुकाओं को चिह्नित करें। मैं अपने आप को पार्सिंग कोड से सीएफजी बनाने की कोशिश कर रहा हूं। दुर्भाग्यवश अगर कोड घोंसला है तो यह गड़बड़ हो जाता है। जीसीसी संकलित कोड से सीएफजी प्राप्त करने की क्षमता देता है। मैं अपने आउटपुट के लिए पार्सर लिख सकता हूं, लेकिन मुझे ब्रेकपॉइंट्स सेट करने के लिए लाइन नंबर चाहिए। -fdump-tree-cfg
या -fdump-tree-vcg
के साथ नियंत्रण फ़्लो ग्राफ़ को आउटपुट करते समय लाइन नंबर प्राप्त करने का कोई तरीका है?एएनएसआई सी कोड
उत्तर
इसलिए मैंने कुछ और शोध किया है और नोड्स के लिए लाइन नंबर प्राप्त करना मुश्किल नहीं है। इसे प्राप्त करने के लिए उन विकल्पों में से एक को lineno
विकल्प जोड़ें। तो -fdump-tree-cfg-lineno
या -fdump-tree-vcg-lineno
का उपयोग करें। मुझे यह देखने के लिए कुछ समय लगा कि क्या वे संख्या विश्वसनीय हैं। में ग्राफ के मामले में वीसीजी प्रत्येक नोड के प्रारूप लेबल में दो संख्या शामिल हैं। वे इस नोड द्वारा प्रतिनिधित्व कोड भाग की शुरुआत और अंत के लिए रेखा संख्याएं हैं।
एक सी कार्यक्रम आप सी के लिए मौजूदा अजगर पारसर्स पर दिखाई दे सकते हैं नियंत्रण प्रवाह ग्राफ के लिए:
- PyCParser
- pycparser
- pyclibrary (pyclibrary का कांटा)
- joern
- CoFlo सी/सी ++ नियंत्रण प्रवाह ग्राफ जनरेटर और विश्लेषक
कॉल ग्राफ़ प्रवाह ग्राफ को नियंत्रित करने के लिए बारीकी से संबंधित निर्माण हैं। सी कोड के लिए कॉल ग्राफ़ (फ़ंक्शन निर्भरता) बनाने के लिए कई दृष्टिकोण उपलब्ध हैं। यह नियंत्रण प्रवाह ग्राफ उत्पादन के साथ प्रगति के लिए मदद साबित हो सकता है। तरीके सी में निर्भरता रेखांकन बनाने के लिए:
cflow का उपयोग करना:
- cflow + pycflow2dot + dot (जीपीएल, बीएसडी) cflow, मजबूत है, क्योंकि यह कोड जो संकलन नहीं कर सकते हैं, उदाहरण के लिए संभाल कर सकते हैं गायब शामिल है। यदि प्रीप्रोसेसर निर्देशों का भारी उपयोग किया जाता है, तो कोड को प्रीप्रोसेस करने के लिए
--cpp
विकल्प की आवश्यकता हो सकती है। - cflow + cflow2dot + डॉट (ध्यान दें कि cflow2dot फिक्सिंग से पहले यह काम करता है कुछ पथ की जरूरत है)
- cflow + cflow2dot.bash (GPL v2, (GPL v2, जीपीएल v3, पब्लिक लाइसेंस (ईपीएल) v1 ग्रहण)?)
- cflow + cflow2vcg (GPL v2, GPL v2) की सूची के साथ
- enhanced cflow (जीपीएल v2) ग्राफ
- cflow + pycflow2dot + dot (जीपीएल, बीएसडी) cflow, मजबूत है, क्योंकि यह कोड जो संकलन नहीं कर सकते हैं, उदाहरण के लिए संभाल कर सकते हैं गायब शामिल है। यदि प्रीप्रोसेसर निर्देशों का भारी उपयोग किया जाता है, तो कोड को प्रीप्रोसेस करने के लिए
से प्रतीकों को बाहर करने के cscope का उपयोग करना:
- cscope (BSD)
- सीएससीओपी + callgraphviz + डॉट + xdot
- सीएससीओपी + वीआईएम CCTree (सी कॉल पेड़ एक्सप्लोरर)
- cscope + ccglue
- cscope + सी, सी ++, अजगर के लिए CodeQuery & जावा
- cscope + Python html producer
- cscope + calltree.sh
ncc (चाहते cflow)
- KCachegrind (केडीई निर्भरता दर्शक)
- Calltree
निम्नलिखित उपकरण दुर्भाग्य से, यह आवश्यक है कि कोड compilable हो क्योंकि वे जीसीसी से उत्पादन पर निर्भर करते हैं:
- CodeViz (GPL v2) (कमजोर बिंदु: क्योंकि यह का उपयोग करता है, compilable स्रोत की जरूरत है gcc cdepn फ़ाइलों को डंप करने के लिए)
- gcc + egypt + डॉट (जीपीएल वी *, पर्ल = जीपीएल | कलात्मक लाइसेंस, ईपीएल v1) (
egypt
का उपयोगRTL
का उत्पादन करने के लिए करता है, इसलिए किसी भी छोटी गाड़ी स्रोत कोड के लिए विफल रहता है, या यहां तक कि यदि आप केवल एक बड़ी परियोजना से एक फ़ाइल पर ध्यान केंद्रित करना चाहते हैं। इसलिए, यह तुलना में बहुत उपयोगी नहीं है और अधिक मजबूतcflow
आधारित toolchains। ध्यान दें कि मिस्र ग्राफ से पुस्तकालय कॉल को छोड़कर के लिए डिफ़ॉल्ट अच्छा समर्थन से है, बनाने के लिए यह क्लीनर।
इसके अलावा, C/C++ के लिए फ़ाइल निर्भरता रेखांकन crowfood
के साथ बनाया जा सकता है।
कॉल ग्राफ़ मुझे जो चाहिए वह नहीं है। मुझे कोड में शाखाओं को देखने की जरूरत है। मुझे उपयोगकर्ता को कोड में सभी लूप और निर्णय बिंदु दिखाना है। मैंने वीसीजी के लिए अपना खुद का पार्सर बनाया है, लेकिन मैं आपके द्वारा पोस्ट किए गए टूल की जांच करूंगा। – Eloar
- 1. एएनएसआई सी
- 2. एएनएसआई सी
- 3. एएनएसआई सी
- 4. एएनएसआई सी
- 5. एएनएसआई सी
- 6. एएनएसआई रंग कोड
- 7. शुद्ध एएनएसआई-सी: जेनेरिक सरणी
- 8. ब्राउज़र में पार्स एएनएसआई एस्केप कोड रंग?
- 9. ï »¿एएनएसआई
- 10. एएनएसआई सी कोशिश/पकड़ के बराबर?
- 11. एएनएसआई सी और समारोह अधिक भार
- 12. त्रुटियाँ एएनएसआई सी किताब, लिंक्ड सूचियाँ अध्याय
- 13. सख्त एएनएसआई मोड
- 14. क्या एएनएसआई सी कोड को सी # में परिवर्तित करने के लिए कोई उपकरण है?
- 15. अधिकतम स्ट्रिंग लंबाई -> एएनएसआई सी
- 16. एएनएसआई सी में प्रलेखन टिप्पणियां कैसे लिखें?
- 17. शून्य है ** एएनएसआई-सी में स्वीकार्य प्रकार?
- 18. एएनएसआई सी ब्लूटूथ एपीआई और ट्यूटोरियल लिनक्स
- 19. एएनएसआई एस्केप (टर्मिनल फॉर्मेटिंग/रंग कोड) को एचटीएमएल
- 20. क्यों RedirectStandardOutput के पास आवश्यक एएनएसआई कोड नहीं हैं?
- 21. जावा "एएनएसआई स्थिरांक"
- 22. क्या करता है एएनएसआई-सी में स्थिर मतलब
- 23. एएनएसआई/आईएसओ सी में कंसोल मेनू कैसे लिखें?
- 24. एएनएसआई प्रारूप क्या है?
- 25. एएनएसआई एसक्यूएल मैनुअल
- 26. रुबी popen3 और एएनएसआई रंग
- 27. क्या विज़ुअल सी ++ के साथ प्री-एएनएसआई (के एंड आर-स्टाइल) सी कोड संकलित करना संभव है?
- 28. एएनएसआई सी का उपयोग कर मिलीसेकंड में समय कैसे मापें?
- 29. एएनएसआई सी यूनियन - क्या वे वास्तव में उपयोगी हैं?
- 30. एएनएसआई-सी व्याकरण - जैसी सरणी घोषणाओं [*] एट Alii
की संभावित डुप्लिकेट (http://stackoverflow.com/questions/517589/tools-to-get-a-pictorial-function-call-graph-of-code [उपकरण कोड का एक सचित्र समारोह कॉल ग्राफ प्राप्त करने के लिए]) –