2013-01-03 8 views
6

मैं एम्बेडेड प्रोग्रामिंग के लिए नया हूं लेकिन मुझे एम्बेडेड प्लेटफ़ॉर्म पर चलने वाले एक जटिल एप्लिकेशन को डीबग करना होगा। मैं एक जेएफबी इंटरफ़ेस के माध्यम से जीडीबी का उपयोग करता हूं।एम्बेडेड एप्लिकेशन में मेमोरी समस्याओं को डीबग कैसे करें

मेरा प्रोग्राम किसी बिंदु पर अप्रत्याशित तरीके से दुर्घटनाग्रस्त हो जाता है। मुझे लगता है कि यह कुछ स्मृति संबंधित मुद्दे के कारण होता है। क्या सिस्टम ने क्रैश होने के बाद जीडीबी मेमोरी का निरीक्षण करने की इजाजत दी है, इस प्रकार पूरी तरह उत्तरदायी नहीं है?

+2

आप किस प्रकार का प्रोसेसर उपयोग कर रहे हैं? – TJD

+0

इसका 32 बिट प्रोसेसर है जिसे icyflex1 (http://www.csem.ch/docs/Show.aspx/9224/docname/CSEM-STR08-Page%2023.pdf) कहा जाता है, और मैं एक जीएनयू आधारित टूलचेन का उपयोग कर रहा हूं। – ricc

+2

दुर्भाग्यवश उस दस्तावेज़ में डीबग के लिए सीपीयू सुविधाओं के बारे में कुछ भी उल्लेख नहीं है। जैसा कि कार्ल नोरम का उल्लेख है, आप आमतौर पर अपवाद पकड़ते हैं और फिर सीपीयू की स्थिति का निरीक्षण करते हैं। जब आप अपवाद को दबाते हैं तो पीसी यह निर्धारित करने के लिए एक सीपीयू विशिष्ट तरीका होगा। कुछ प्रोसेसर में डीबग/गलती स्थिति रजिस्ट्रार होते हैं जो आपको बताएंगे कि खराब पता किस तरह से पहुंचा था और यदि यह कोड या डेटा बस था। – TJD

उत्तर

6

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

3

यह क्रैश होने पर निर्भर करता है। अगर सिस्टम केवल अनुत्तरदायी है (कुछ अनंत लूप, डेडलॉक या इसी तरह) में, तो यह आमतौर पर जीडीबी का जवाब देगा और आप बैकट्रैक (कॉल स्टैक) आदि देख पाएंगे। यदि सिस्टम/बस/सीपीयू वास्तव में है दुर्घटनाग्रस्त (निचले स्तर पर), तो शायद यह जवाब नहीं देगा। इस मामले में आप संदिग्ध स्थानों/चरों पर ब्रेकपॉइंट्स सेट करने का प्रयास कर सकते हैं और देख सकते हैं कि क्या हो रहा है। इसके अलावा सिम्युलेटर (आईएसएस, आरटीएल - यदि लागू हो) एचडब्ल्यू के साथ व्यवहार की तुलना करने के लिए आसान हो सकता है।

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