कुछ दिन पहले मुझे मैन्युअल रूप से जीडीबी संकलित करना था, ताकि हाथ-लिनक्स ऐप को डिबग किया जा सके, यह बहुत तुच्छ है, लेकिन यह बहुत उपयोगी है कि मैंने सोचा कि यह निर्देश यहां पोस्ट करने के लिए एक अच्छा विचार होगा यहां नीचे से डीबगिंग के बारे में कुछ स्पष्टीकरण दिए गए हैं KDevelop. This gdb-6 8 के साथ किया गया था, आप इसे पकड़ कर सकते हैं यहां यह माना जाता है कि हाथ-लिनक्स उपकरण उपलब्ध हैं PATH सही ढंग से जीडीबी ग्राहक निर्धारित करने के लिए। डीकंप्रेर्स जीडीबी -6 8 और जारी करके इसे संकलित करें। बस संकलन के बाद जीडीबी जीडीबी कॉपी करें arm-linux-gdb के लिए जहां हाथ-लिनक्स टूलकेन बायनेरिज़ रहते हैं, यह पूरी तरह से संगठन और उचित नामकरण के लिए है, अब आप gdb-6 8 directory. NOTE को निकाल सकते हैं यदि आपका मेजबान कंप्यूटर वास्तुकला इंटेल-आधारित नहीं है तो बस सही द्वारा x86 को बदल दें जीडीबी सर्वर एआरएम। डीकंप्रेर्स जीडीबी -6 8 के प्लेटफॉर्म के लिए मूल्य और जारी करके इसे संकलित करें। जीडीबी gdbserver gdbserver को अपने हाथ-लिनक्स फाइल सिस्टम में कॉपी करने के बाद आप एक दूरस्थ शेल gdbserver से इसे निष्पादित कर सकते हैं एक हाथ-एल्फ बाइनरी अब आप जी निकाल सकते हैं डीबी -6 8 डायरेक्टरी। पहले सर्वर को आर्म प्रोसेसर में कुछ समान जारी करके शुरू करना चाहिए। जहां निष्पादन योग्य है वह डिबग किया जा रहा है और होस्ट 1234 को पोर्ट 1234 के कनेक्शन के लिए सुनने के लिए gdbserver को बताता है। जीडीबी चलाने के लिए बस टाइप करें यह एक पीसी शेल में है। इसके बाद आपको जीडीबी प्रॉम्प्ट मिलेगा लक्ष्य प्रकार से कनेक्ट करने के लिए। एक्जीक्यूशन प्रकार फिर से शुरू करने के लिए जारी रखें आप जीडीबी उपयोग पर एक सिंहावलोकन प्राप्त कर सकते हैं। केडीईवेल के साथ डिबगिंग। केडीईवेल का उपयोग चर को देखने और डीबग करने के लिए किया जा सकता है। दूरस्थ लक्ष्य स्थान ब्रेकपॉइंट, निष्पादन रोकना, आदि। प्रोजेक्ट पर जाएं - प्रोजेक्ट विकल्प और सुनिश्चित करें कि आपके पास ऐसा कुछ है एक फाइल है जिसमें निम्नलिखित है। इसके बाद आप दूरस्थ रूप से किसी भी हाथ-लिनक्स अनुप्रयोग को डिबग करने के लिए तैयार होंगे। मैं लिनक्स के लिए नया हूँ, मैं जीडीबी -7 5 डाउनलोड कर रहा था, जीयूआर रिसर्च से मैं साइगविन पर्यावरण में जीडीबी का निर्माण कर रहा हूं और मुझे एक त्रुटि मिली जैसा कि नीचे दिखाया गया है। कॉन्फ़िगर करें चेतावनी कोई भी बेहतर शाप पुस्तकालय नहीं पाया गया TUI को tgetent युक्त पुस्तकालय की जांच करने में अक्षम कोई कॉन्फ़िगर त्रुटि नहीं टर्म कैपिटल लाइब्रेरी मिली 1 कॉन्फ़िगर-जीडीबी त्रुटि 1 बनाने 1 डायरेक्टरी को छोड़कर xyz xyz सभी त्रुटि 2 xyz xyz. मैंने अन्य को भी संदर्भित किया था धागा और मैंने पहले से ही ncurses-5 9 को स्थापित किया है लेकिन जब मैं उस फाइल बनाने जा रहा था तो मुझे त्रुटि संदेश मिला जैसे। ctrl2 ld 1 बाहर निकलें की स्थिति बनाते हैं 1 त्रुटि 1 बनाते हैं 1 निर्देशिका xyz xyz ncurses-5 9c को छोड़कर सभी त्रुटि 2.मैं भी टर्म कैपिटल लाइब्रेरी डाउनलोड करने की कोशिश की और यह सफलतापूर्वक सफल रहा, लेकिन जब मैं जीडीबी -7 5 का निर्माण करने जा रहा था तो यह मुझे ऊपर बताए गए अनुसार ही त्रुटि दिखाता है.तो अगर किसी को भी इस समस्या को हल करने का विचार है तो यह होगा बहुत दयालु.धन्यवाद में धन्यवाद। रिमोट सी GDB और जीडीबी सर्वर के साथ रॉस-लक्ष्य डिबगिंग। सिद्धांत रूप में, जीडीबी जीएनयू डीबगर, लिनक्स-आधारित एम्बेडेड सिस्टम पर चलने वाले डीबगिंग अनुप्रयोगों के काम को कम कर सकता है व्यवहार में, इस कार्य के लिए जीडीबी की स्थापना करना एक चुनौती है जो इसे कुछ लेती है काम, और पर काबू पाने के लिए कुछ तकनीकी बाधाएं हैं, इसमें शामिल किए गए प्रयासों से कहीं ज्यादा गड़बड़ करने की बजाय अनुमान लगाने के बजाय एक प्रोग्राम को विधिवत डिबग करने का एक तरीका है। इसमें कठिनाइयों को आसान बनाने के कुछ सुझाव दिए गए हैं। लक्ष्य प्लेटफॉर्म पर जीडीबी का पूर्ण उदाहरण, आप जीडीबी सर्वर को एक प्रोग्राम का उपयोग कर सकते हैं जो आपको एक अलग मशीन पर जीडीबी चलाने की सुविधा देता है, जिस पर आपका प्रोग्राम चलाया जा रहा है GDBserver का उपयोग करने का लाभ यह है कि उसे लक्ष्य संसाधनों का केवल एक अंश कि जीडीबी खपत करता है, क्योंकि यह डिबगर की केवल निम्न स्तरीय कार्यक्षमता को लागू करता है - अर्थात् ब्रेकपॉइंट्स की स्थापना करना और लक्ष्य प्रोसेसर रजिस्टरों को एक्सेस करना और लिखने के लिए आवेदन स्मृति GDBserver पढ़ने का प्रबंधन करता है ई आवेदन डीबग किया जा रहा है, फिर विकास वर्कस्टेशन पर चल रहे जीडीबी के एक दूरस्थ उदाहरण से निर्देशों के लिए इंतजार करता है। विशेष रूप से, विकास वर्कस्टेशन के पास एक अलग प्रोसेसर है, एक आई 686 वर्ग प्रोसेसर जिसका लक्ष्य एआरएम, पावरपीसी, या कुछ और हो सकता है इसका अर्थ है कि आप वर्कस्टेशन पर स्थापित जीडीबी निष्पादन योग्य का उपयोग नहीं कर सकते हैं - आप एक क्रॉस-लक्ष्य डिबगर चाहते हैं दूसरे शब्दों में, आपको कस्टम कोड से जीडीबी को कस्टम कोड बनाने की ज़रूरत है। बिल्डिंग जीडीबी। निम्नलिखित उदाहरण 7450 PowerPC का उपयोग करता है लक्ष्य प्रोसेसर के रूप में.आप शुरू होने से पहले, आपको पीसी चलाने वाले जीडीबी और लक्ष्य प्लेटफॉर्म के बीच एक संचार इंटरफेस की आवश्यकता होती है, या तो सीरियल लिंक या, प्राथमिक रूप से, एक ईथरनेट नेटवर्क कनेक्शन आपको एक जीएनयू सी कम्पाइलर की जरूरत है सी रन-टाइम लाइब्रेरी और द्विआधारी उपयोगिताओं, उर्फ बिनुतिल्स, जो विकास वर्कस्टेशन पर चलता है और लक्ष्य प्रोसेसर के लिए एक्जिक्यूटेंट्स उत्पन्न करती हैं आप जीडीबी स्रोत से दो सेट बिनर बनाएंगे codecross-target - जहां मेजबान विकास वर्कस्टेशन है और लक्ष्य लक्ष्य प्रोसेसर है। नेटिव - जहां मेजबान और लक्ष्य दोनों लक्ष्य प्रोसेसर हैं। पहले जीडीबी स्रोत कोड संकुचित संग्रह डाउनलोड करें और इसे खोलें। GDB स्रोत पैकेज जीएनयू बिल्ड सिस्टम का उपयोग करता है, जहां बायनेरिज़ उत्पन्न करना आमतौर पर कुछ कमांडों को कॉन्फ़िगर करता है, स्थापित करना पड़ता है लेकिन हमारे मामले में यह थोड़ा मुश्किल होता है, हम दो अलग-अलग होस्ट प्रोसेसर के लिए बायनेरिज़ बनाने का इरादा रखते हैं, और विभिन्न स्थानों पर बायनेरिज़ स्थापित करते हैं इसलिए हम निर्देशिका के बदले हम अपनी डायरेक्टरी में बायनेरिज़ का निर्माण करेंगे, जिसमें स्रोत पैकेज को अनपैक किया गया है इसके अलावा, हम लक्ष्य और मेजबान प्रोसेसर और अधिष्ठापन डायरेक्टरी उपसर्ग को निर्दिष्ट करने के लिए कॉन्फ़िगर स्क्रिप्ट के कमांड लाइन विकल्प का उपयोग करेंगे। क्रॉस-टास्क बाइनरीज़, --target विकल्प के साथ लक्ष्य आर्किटेक्चर को निर्दिष्ट करें यहां आर्किटेक्चर आइडेंटिफ़ायर powerpc-7450-linux-gnu यहां सभी क्रॉस-टूलकेन बायनेरिज़ का उपसर्ग है ई क्रॉस कंपाइलर बायनरी PowerPC-7450-linux-gnu-gcc है। लक्ष्य-देशी बायनेरिज़ बनाने का ट्रेलर ट्रिकियर है एक चीज़ के लिए आपको मेजबान आर्किटेक्चर को निर्दिष्ट करना होगा लक्ष्य आर्किटेक्चर के समान powerpc-7450-linux-gnu एक अन्य मुद्दा लायब्रेरी गुम है - कुछ लाइब्रेरी क्रॉस-टूलचैन में उपलब्ध नहीं हो सकते हैं, और लक्ष्य-देशी जीडीबी बनाने की कोशिश करने से पहले इसे बनाया जाना चाहिए। यह उदाहरण दिखाता है कि जब आपको एक लक्ष्य-देशी टर्म कैलकुलेटर लाइब्रेरी मिल जाती है तो क्रॉस बिल्डिंग कुछ हद तक अलग है यहाँ - कॉन्फ़िगर करें - सहायता का उपयोग करते समय संदेह में। एक आखिरी मुद्दा यह विचार करने के लिए है कि क्या बायनेरिज़ स्टेटिकली लिंक होना चाहिए यह आवश्यक है कि यदि लक्ष्य प्लेटफॉर्म में कुछ साझा लाइब्रेरी गायब हों जो सामान्य ऑपरेशन के लिए जीडीबी और जीडीबी सर्वर निर्भर करते हैं, लेकिन परिणामी निष्पादनयोग्य गतिशील रूप से जुड़े लोगों से बहुत अधिक होते हैं आप कॉन्फ़िगर करने से पहले एलडीएफएएलएजीएस पर्यावरण चर के लिए विकल्प जोड़कर स्थिर लिंक को निर्दिष्ट कर सकते हैं कोई अतिरिक्त लाइब्रेरी भी निर्दिष्ट होना चाहिए एलडीएफएएलजीएस और सीपीपीएफएएलजीएस दोनों के रूप में निम्नानुसार है। जीएनयू लिंकर बिल्ड की प्रक्रिया के दौरान कुछ चेतावनियों को जारी करेगा उदाहरण के लिए कुछ कार्यों का उपयोग करें dlopen, gethostbyname, और कुछ अधिक स्थिर रूप से जुड़े अनुप्रयोगों के लिए क्रम में आवश्यक है कि जीएनयू सी रनटाइम लाइब्रेरी संस्करण से साझा लाइब्रेरी लिंक करने के लिए इस्तेमाल किया जा सकता है आपको लक्ष्य प्लेटफॉर्म पर इन पुस्तकालयों को स्थापित करना पड़ सकता है। एक बार जब आप जीडीबी सर्वर निष्पादन योग्य बनाते हैं, तो उसे लक्ष्य प्लेटफॉर्म पर कॉपी करें आप PowerPC-7450 का उपयोग करते हुए, इसे पहले से सभी डीबग जानकारी को अलग करके कुछ भंडारण स्थान सहेज सकते हैं - linux-gnu-strip उपयोगिता। एक अलग लक्ष्य प्रोसेसर के लिए बिल्ड की प्रक्रिया का उपयोग करना केवल एक अलग आर्किटेक्चर पहचानकर्ता का उपयोग करने का मामला होना चाहिए। डीबगिंग की सुविधा के लिए, आपको डी-डी जानकारी के साथ - g कमांड लाइन विकल्प को कंपाइलर लिंकर परिणामी निष्पादन योग्य फ़ाइल लक्ष्य प्लेटफ़ॉर्म पर उपलब्ध भंडारण अंतरिक्ष में फिट होने के लिए बहुत बड़ी हो सकती है, इसलिए वहां जाने से पहले आप वहां जा सकते हैं PowerPC-7450-linux-gnu-strip का उपयोग करके इसकी प्रतिलिपि डीबग जानकारी को पट्टी करें और लक्षित प्लेटफ़ॉर्म पर छीन ली गई प्रतिलिपि को छूएं छीन लिया संस्करण लक्ष्य प्लेटफ़ॉर्म पर जीडीबी सर्वर के साथ चलाया जा रहा है, और गैर-छिपी हुई प्रतिलिपि डेवलपमेंट वर्कस्टेशन पर जीडीबी में लोड किया जाना है। रिमोट डीबगिंग लक्ष्य प्लेटफॉर्म पर सीधा है, आने वाले टीसीपी कनेक्शन को सुनने के लिए मेजबान और बंदरगाह को निर्दिष्ट करते हुए, जीडीबी सर्वर के साथ आवेदन शुरू करते हैं। विकास वर्कस्टेशन पर, क्रॉस-लांच लॉन्च करें जीडीबी। गैर-छिपी निष्पादन योग्य निर्दिष्ट करना सुनिश्चित करें जीडीबी कंसोल पर टाइप करें। ये कमांड जीडीबी को लक्ष्य प्लेटफॉर्म पर चलने वाले जीडीबी सर्वर से कनेक्ट करेंगे, प्रोग्राम की शुरुआत में एक ब्रेकपॉइंट सेट करेंगे, और यह तब तक चलता रहे जब तक कि यह उस तक पहुंच न जाए पहले ब्रेकपॉइंट। आप जीडीबी सर्वर को पहले से ही चलने वाली प्रक्रिया में संलग्न कर सकते हैं। प्रक्रिया तब बंद हो गई है, और फिर आप इसे रिमोट जीडीबी के साथ डीबग कर सकते हैं। जीडीबी कमांड एक दूरस्थ अनुप्रयोग डिबगिंग करते समय अपेक्षित काम करते हैं कुछ अपवाद - विशेष रूप से, रन कमांड का उपयोग नहीं किया गया है, क्योंकि प्रोग्राम पहले से ही चल रहा है जब आप डीबग सत्र शुरू करते हैं एक अन्य मौखिक यह है कि अगर प्रोग्राम को जारी रखने तक जारी रखने की अनुमति दी जाती है, तो रिमोट जीडीबी सर्वर बंद हो जाएगा, और रिमोट सत्र समाप्त हो जाएगा। एक दूरस्थ रिमोट डीबगिंग वातावरण सेट करना कुछ ज्यादा परेशानी जैसा लग सकता है - आखिरकार, कुछ भी अच्छी तरह से छपा नहीं रहता है लेकिन जीडीबी के साथ आप कोड और डेटा प्रवाह का पता लगा सकते हैं और संशोधित कर सकते हैं, और अन्यथा विश्लेषण कर सकते हैं आपके कोड का व्यवहार, इसे स्पष्ट रूप से बदलने के बिना, यह दुर्भावनापूर्ण तरीके से हल करता है, लेकिन यह सुनिश्चित करता है। गैबस्टर वर्ड बाइनरी ट्रेडिंग. इस कारण के लिए मैंने अपस्ट्रीम संस्करण को संकलित करने का निर्णय लिया और उस प्रोग्राम का उपयोग किया जो इस में मैं डीबग करूँगा उदाहरण जीएनयू हैलो सरल है, जो कि हैलो वर्ल्ड प्रिंटिंग से बहुत ज्यादा काम नहीं करता है, लेकिन जीएनयू ऑटोटूल्स जीडीबीरवेर आर्म बाइनरी ट्रेडिंग जीटीए 5 मल्टी टास्क हत्यारे रेडवुड स्टॉक ट्रेडिंग के साथ क्रॉस-कलेक्शन का एक अच्छा उदाहरण है पथ को लक्षित करने के लिए wnload, हालांकि रिमोट पथ और बाइनरी नाम अभी भी निर्दिष्ट किया जाना चाहिए ताकि हम gdbserver कह सकते हैं जहां द्विआधारी स्थित है इस प्रक्रिया का पालन करने के लिए, मैं sudo apt-get स्थापित build-essential ddd cpio libncurses5-dev libsdl - dev zlib1g-dev wget chmod x arm-2010q1-202 arm-2010q1-202 मैंने टूलचैन को डिफ़ॉल्ट निर्देशिका में स्थापित किया है। कोड सोर्सीरी मैं कुछ परेशानियों में गया था, इसलिए मैं यहां लिखने जा रहा हूँ जो कि मेरे लिए काम करने वाली प्रक्रिया qemu-system-arm एक सॉफ्टवेयर है जो एक बहुमुखी पीबी प्लेटफॉर्म को emulates करता है I ने उस का उपयोग करने की कोशिश की जो पैकेज को उबंटु रिपॉजिटरी के माध्यम से स्थापित किया जा सकता है क्यूमू-केवीएम-एक्स्ट्रास है, लेकिन यह लिनक्स 2 के अंतिम संस्करण को चलाने से रोकता है। 6 35.gdbserver सॉफ़्टवेयर का एक टुकड़ा है जो जीडीबी के कुछ कार्यात्मकताओं को डिबगिंग स्टाब का कार्यान्वयन करता है और फिर नेटवर्क के माध्यम से पूर्ण जीडीबी इंस्टेंस से जुड़ने की संभावना प्रदान करता है या सीरियल पोर्ट डीएस -5 के माध्यम से जब मैं एंड्रॉइड नेटिव्ह लायब्रेरी डीबग करने की कोशिश करता हूं तो जीडीबीएसर त्रुटियों को दिखा रहा है सी एआरएम 64-बीट जीडीएससीवर आर्म बाइनरी ट्रेडिंग फॉरेक्स कैंडलस्टिक्स मेड ईज़ी पीडीएफ के लिए एप्लीकेशन बाइनरी इंटरफ़ेस स्टैंडर्ड अंग्रेज़ी कॉलोनियों ने द्विआधारी पर काम किया 18 में आयात व्यापार और आर एमवीयू में निवेश को सीमित करके व्यापार को हतोत्साहित करने की मांग की थी। यह जीडीएसर्वर बाइनरी एल के कारण बनाया गया है जिससे पीआईई सुरक्षा जांच को लागू किया गया है, इस वजह से एल जीडीबीरवर का उपयोग नहीं कर सकता बिन हाथ - linux-androideabi-gdb अगला, मैं एक पिछले ट्यूटोरियल में मैं पिछले संस्करण में Busybox का नवीनतम संस्करण लेता हूं, इसे स्थिर रूप से संकलित किया है, लेकिन इस बार मैं नहीं दूंगा, क्योंकि मैं जीडी-बैरवर का उपयोग करने की योजना बना रहा हूं, हालांकि किसी भी तरह से साझा किए गए पुस्तकालयों को पथ लक्षित करने के लिए डाउनलोड करना है, हालांकि रिमोट पथ और बाइनरी नाम अभी भी निर्दिष्ट किया जाना चाहिए ताकि हम जीडीबीएसर को बता सकें जहां बाइनरी स्थित है GDB सर्वर और क्लाइंट एआरएम के लिए कोड सॉर्केरी कंपाइलर कलेक्शन से आते हैं, साथ ही एआरएम के लिए सॉफ़्टवेयर को क्रॉस-कंफाइल करने के लिए उपयोग किया जाता है। मेरे मामले में जीडीबीरवर निष्पादन योग्य पथ घर फ़्रैन्स्को कोड पर पाया जा सकता है कोड सॉर्सेरी शोरसेरीजी लाइट बांह-कोई नहीं-लिनक्स-ग्नेएबीबीबीसी यूएसबी बिन जीडीबीरवर्टर जीडीबीएसर आर्म बाइनरी ट्रेडिंग wget tar xjf busybox-1 17 1bz2 cd busybox-1 17 1 एआरसीएच हाथ क्रॉसकोम्पीआईआईएल बांह-कोई-लिनक्स-ग्नेयबी-डीफफॉन्फ एआरसीएच हाथ क्रॉसकोम्पीआईआईएल हाथ-कोई-लिनक्स-ग्नूबी-सीडी स्थापित करें सीडी प्राप्त करें फॉरेन ट्रेडिंग गाइड के लिए नया एफक्ससीएम जाओ अंग्रेजी कॉलोनियों ने द्विआधारी पर जोर दिया 18 में बाद के कृत्यों ने लिमी द्वारा व्यापार को हतोत्साहित करने की मांग की आयात व्यापार में टिंग निवेश और प्लगइन के जीएनयू एआरएम ग्रहण परिवार की मुख्य विशेषताएं उदाहरण के लिए हैं- हाथ-कोई-एबीआई-जीसीसी, संकलक विकल्प और टूलचैन बाइनरी के लिए सही पथ से एसजीजीआर जे-लिंक जांच इसकी एकीकृत जीडीबी के साथ सर्वर, जे-लिंक प्लग-इन इन्ट्राडे शेयर ट्रेडिंग रणनीति के माध्यम से पथ को लक्षित करने के लिए डाउनलोड करें, हालांकि रिमोट पथ और बाइनरी नाम अभी भी निर्दिष्ट किया जाना चाहिए ताकि हम जीडीबीईरर कह सकते हैं जहां बाइनरी स्थित है परिणाम का एक संकुचित कर्नेल इमेज linux - 2 6 35 कमान बांह बूट जेड छवि मैं क्यूईएमयू के अंदर प्रोग्राम चलाने के लिए gdbserver का उपयोग करना चाहता हूं, और उसके बाद एक पीसी पर चलने वाले जीडीबी इंस्टेंस से कनेक्ट करना चाहता हूं, जो एक टीसीपी लिंक का उपयोग कर रहा है, जिसे मैं प्राप्त करना चाहता था निम्नलिखित चित्र Gdbserver आर्म बाइनरी ट्रेडिंग विदेशी मुद्रा प्लेटफार्म मैक पर रंग नीला रंग मेरे उबंटू पीसी 32-बिट x 86 पर चलने के लिए संकलित सॉफ्टवेयर को इंगित करता है जबकि रंग हरा एआरएम Gdbserver आर्म बाइनरी ट्रेडिंग पर चलने के लिए संकलित सॉफ्टवेयर इंगित करता है कि निम्नलिखित प्रक्रिया एक समर्पित च पुराने, और अब तक रूट एक्सेस की आवश्यकता नहीं है क्योंकि मैं क्यूईएमयू के अंदर एक प्रोग्राम चलाने के लिए gdbserver का उपयोग करना चाहता था, और तब मैं क्यूमू-सिस्टम-आर्म में भी सरल हैलो विश्व प्रोग्राम निष्पादित कर सकता हूं, जब तक कि बाइनरी सबसे पहले नहीं है, मैंने आधिकारिक रिपॉजिटरी से नया कर्नेल संस्करण। हाल ही में मैं एक एआरएम सिस्टम के अंदर चलने वाले एक लिनक्स प्रोग्राम को डिबग करना चाहता था, जो कि एयूएमयू के साथ अनुकरण किया जाता है Gdbserver Arm Binary Trading wget tar xzf qemu-0 12 5gz cd qemu-0 12 5 विन्यास - सक्षम-एसडीएल - - disable-kvm --enable-debug --target-list arm-softmmu सीडी बनाओ हार्ड डिस्क स्थान के 1 गीगाबाइट के बारे में प्रक्रिया के अंत में सबसे अच्छा द्विआधारी विकल्प दलाल का इस्तेमाल 5 न्यूनतम वेबसाइट्स यूके के साथ किया गया था प्रासंगिक परिणाम कार्यक्रम qemu -0 12 5 हाथ-सॉफ्टमू क्यूमू-सिस्टम-आर्म जिसका उपयोग बहुमुखी पीबी प्लेटफॉर्म का अनुकरण करने के लिए किया जाएगा। पोस्ट नेविगेशन। हालिया पोस्ट। मूल पाठ। क्रॉस डीबगिंग के लिए बिल्डिंग जीडीबी और जीडीबी सर्वर। समस्या बयान। मेरे पास एआरएम जीएनयू लिनक्स है बोर्ड, और मैं आराम से, इसमें चल रहे कार्यक्रमों को डिबग करने में सक्षम होना चाहता हूं f मेरे x8664 जीएनयू लिनक्स मशीन मैं इस परिदृश्य के लिए जीडीबी और जीडीबी सर्वर का निर्माण कैसे करूं, जिसे मैं कॉन्फ़िगर विकल्पों के साथ भ्रमित कर सकता हूँ मुझे निर्दिष्ट करने की आवश्यकता है कि मुझे एआरएम के लिए जीडीबी को भी संकलित करने की आवश्यकता है। बिल्ड, मेजबान, लक्ष्य, सबसे अधिक। जीएनबी कार्यक्रम, जीडीबी अपने बिल्ड सिस्टम के हिस्से के रूप में ऑटोकॉन्फ का उपयोग करता है। यहां पर जीएनयू ऑटोकॉनफ, ऑटोमॉक और लिबटोवल बुक का अध्याय है, क्रॉस टूल्स का निर्माण प्रत्येक को सही तीरों का पालन करना चाहिए। विशेष रूप से, बिल्ड, मेजबान और लक्ष्य के बीच भेद को समझना महत्वपूर्ण है। उन लिंक्ड अध्यायों को पढ़िए, कृपया कृपया ठीक है, बाद में प्रतीक्षा करूँगा। जब एक x8664 मशीन के सामने खड़ी हुई बातों के बारे में सोचते हैं, तो हम कहते हैं कि जीडीबी आपके होस्ट सिस्टम पर चलता है, एक्स 8664 जीएनयू लिनक्स मशीन, जबकि जीडीबी सरवर लक्ष्य पर चलता है , एआरएम जीएनयू लिनक्स बोर्ड मशीन। हालाँकि, जीडीबी और जीडीबी सर्वर अलग प्रोग्राम होते हैं वे अलग-अलग निर्मित होते हैं, इसलिए हम प्रत्येक अलग बिल्ड चरण के लिए बिल्ड होस्ट लक्ष्य भेद लागू करते हैं। ठीक है, यह कैसे जीडीबी और जीडीबी सर्वर पर लागू होता है। आपको एक जीडीबी की आवश्यकता है जो कि आर x86 पर autoconf विन्यास के साथ, आप उपयोग करते हैं - निर्दिष्ट करने के लिए कि प्रोग्राम कहाँ चलाता है आपके मामले में ऐसा होता है --होस्ट x8664-unknown-linux-gnu हालांकि, यदि प्रोग्राम उसी सिस्टम पर चलने के लिए है से निर्माण कर रहे हैं, तो आपको यह निर्दिष्ट करने की आवश्यकता नहीं है कि, कॉन्फ़िगर के रूप में आपके सिस्टम को स्वचालित रूप से --होस्ट के लिए डिफ़ॉल्ट रूप से चुनने की आवश्यकता होगी, आपको इसे बनाने की आवश्यकता है ताकि बनाया गया जीडीबी एआरएम जीएनयू लिनक्स प्रोग्राम्स को डिबग कैसे कर सकता है यह वह जगह है जहां - - चैग के साथ आता है कहें कि आपके पास एआरएम बोर्ड फ़ाइल नामों पर चलने वाले प्रोग्रामों के लिए इस्तेमाल किया गया एक्सएमआई एक्सएमएल लिनक्स कंपाइलर फ़ाइल से आपके एक्स 8664 डेवलपमेंट होस्ट पर उपलब्ध एक हाथ-लिनक्स-जीनसीबी-जीसीसी आदि क्रॉस टूलचैन हो सकता है नाम, या चलाने से हाथ - linux-gnueabi-gcc - v आउटपुट में लक्ष्य रेखा के लिए, हम देखते हैं कि जीसीसी को --target arm-linux-gnueabi के साथ कॉन्फ़िगर किया गया था हम जीडीबी के कॉन्फ़िगर करने के लिए ही - target स्विच पास करते हैं हो गया, यह सच है। आप ऐसा कुछ देखेंगे। यदि आप निर्दिष्ट नहीं करते हैं - तो लक्ष्य निर्धारित करें ई स्क्रिप्ट डिफ़ॉल्ट सिस्टम को उसी सिस्टम पर डिफॉल्ट करता है जिस पर आप फिर से निर्माण कर रहे हैं, जो कि x8664-अज्ञात - linux-gnu होगा जो कि हम नहीं चाहते हैं। 2 जीडीबी सर्वर के लिए। फिर से, जीडीबी सर्वर को लक्षित मशीन पर चलाता है, एआरएम जीएनयू लिनक्स एक आप एआरएम जीएनयू लिनक्स मशीन पर स्रोतों की प्रतिलिपि बना सकते हैं, और इसे वहां बना सकते हैं जीडीबी के मानक पथ gdbserver कॉन्फ़िगर करें मेक इनस्टॉलेशन ठीक काम करेगा। हालाँकि, आप अपने x8664 GNU के आराम में GDBserver का निर्माण करना चाहते हैं लिनक्स होस्ट आपके पास एक एआरएम क्रॉस कम्पाइलर है, जो कि सभी के बाद आसान है, ऑटोकॉन के होस्ट होस्ट डिस्पेंसेशन से सही रीकैपिंग, - होस्ट का उपयोग बिंगो को चलाने के लिए किया जाता है, क्योंकि एडीएम पर जीडीबी सर्वर चलाएगा, तो आप पास - arm-linux - GDBserver के लिए gnueabi विन्यस्त आप की तरह कुछ मिल जाएगा लेकिन क्यों नहीं - लक्ष्य - ठीक है, आपको फिर से बिल्ड होस्ट लक्ष्य भेद पढ़ना होगा - लक्ष्य वास्तव में जीडीबी सर्वर के लिए समझ में नहीं आता है, क्योंकि यह क्रॉस टूल नहीं है - यह अपने सिस्टम पर कार्यक्रमों को डीबग करना जानता है एआरएम सिस्टम पर चलने वाले अधिकांश अन्य कार्यक्रमों से अलग नहीं है, जैसे कि grep, sed, आदि, ताकि आप इसे अन्य सभी ऑटोकॉनफ़ कॉन्फ़िगर कार्यक्रमों की तरह बना दें। 4 समस्या निवारण .4 1 सिस्टम कंपाइलर का उपयोग करता है। यदि आपने कॉन्फ़िगर किया है - मेजबान मेजबान, लेकिन host-gcc के बजाय सिस्टम जीसीसी का उपयोग करें, सुनिश्चित करें कि बाद में आपके पाथ में पाया जा सकता है और आप इसे निष्पादित कर सकते हैं, उदाहरण के लिए हाथ-अज्ञात - linux-gnueabi-gcc - v का प्रयास करें, और इस कारण से शुरू करें यह है कि यदि कॉन्फ़िग एक उपयोगी होस्ट-जीसीसी खोज नहीं करता है, तो यह सीसीईसी पर वापस आता है। अधिक जानकारी के लिए यहां देखें। अलग-अलग बिल्ड डाइर्स पर। अंतिम नोट आपको नहीं है, लेकिन मैं एक अलग बिल्ड निर्देशिका से निर्माण की सिफारिश करता हूं सूत्रों की तरह। gdb में gdb के लिए निर्देशिका बनाएं- gdbs build-gdb. build निर्देशिका gdbserver gdb build-gdbserver. Cd में के लिए gdb build-gdbserver और do src gdb gdbserver कॉन्फ़िगर करें.इस तरह से, किसी भी समय आप स्क्रैच से एक बिल्ड करना चाहते हैं, आपको आरएम-आरएफ बिल्ड निर्देशिकाओं को पोंछना होगा। यह नहीं है कि यह सामग्री ठीक से सीखना होगा जीएनयू ऑटोकॉन्फ़ आधारित कार्यक्रमों और पुस्तकालयों के सभी प्रकार के निर्माण के लिए क्रॉस बिल्डिंग, इसलिए यह एक कौशल के लायक है। फिर भी, रीकैप करने के लिए। जीडीबी के लिए, कॉन्फिगर करें - लक्ष्य - arm-linux-gnueabi उस पथ के लिए gdb-src कॉन्फ़िगरेशन के लिए कॉन्फ़िगर करें। GDBserver के लिए कॉन्फिगर करें --हमेशा हाथ - linux-gnueabi GDBserver को उस पथ के लिए कॉन्फ़िगर करें gdb-src gdb gdbserver कॉन्फ़िगर करें। NONE BuildingCrossGDBandGDBserver PedroAlves 2015-08-14 16 26 41. सभी सामग्री सी 2008 फ्री सॉफ्टवेयर फाउंडेशन उपयोग की शर्तों के लिए , पुनर्वितरण, और संशोधन, कृपया विकीलीकेंस पेज देखें .21 जीडीबी और ओपनोकिड। ओपनोकड रिमोट जीडीबीरर प्रोटोकॉल का अनुपालन करता है और, जैसे, दूरगामी लक्ष्यों को डीबग करने के लिए इस्तेमाल किया जा सकता है ओपनोकडी के साथ काम करने के लिए जीडीबी की स्थापना में कई घटकों को शामिल किया जा सकता है.ओपनोकडी सर्वर समर्थन एफ या जीडीबी को कॉन्फ़िगर करने की आवश्यकता हो सकती है जीडीबी कॉन्फ़िगरेशन देखें। ओडोकसी के लिए जीडीबी का समर्थन कॉन्फ़िगरेशन की आवश्यकता हो सकती है, जैसा कि इस अध्याय में दिखाया गया है। अगर आपके पास ईक्लिप्स जैसे एक जीयूआई पर्यावरण है, तो शायद इसकी भी कॉन्फ़िगर करने की आवश्यकता होगी। बेशक, संस्करण आपके द्वारा जीडीबी का उपयोग करने वाला एक ऐसा होना चाहिए जिसे आप उपयोग कर रहे लक्ष्य सीपीयू के बारे में जानने के लिए बनाया गया है यह शायद उपकरण श्रृंखला का हिस्सा है जिसे आप उपयोग कर रहे हैं उदाहरण के लिए, यदि आप एक्सएमसी के लिए एआरएम के लिए क्रॉस-डेवलपमेंट कर रहे हैं, बजाय देशी x86 gdb कमांड का उपयोग करने के लिए आप arm-none-eabi-gdb का प्रयोग कर सकते हैं यदि वह उपकरण शृंखला जो आपके कोड को संकलित करने के लिए प्रयुक्त होता है। 21 1 जीडीबी से कनेक्ट करना। GDB 6 7 का उपयोग करें या ओपनोकसी के साथ नया अगर आप मुसीबत में चलते हैं उदाहरण के लिए जीडीबी 6 3 में एक ज्ञात बग है जो बोगस मेमोरी एक्सेस त्रुटियों का उत्पादन करता है, जिसे बाद में तय किया गया है। ओपनोकड जीडीबी के साथ दो तरीकों से संवाद कर सकता है.एक सॉकेट टीसीपी आईपी कनेक्शन आम तौर पर निम्न प्रकार से शुरू होता है। इस कारण जीडीबी को जीडीबीएसआर स्थानीय पीसी पर पोर्ट 3333 का उपयोग करते हुए। यह भी जीडीबी ई का उपयोग करना संभव है xtended रिमोट प्रोटोकॉल निम्न प्रकार से है। एक पाइप कनेक्शन आमतौर पर निम्नानुसार शुरू किया जाता है। यह GDB को ओपनोकडी चलाने और पाइप का उपयोग करने के लिए कारण होगा stdin stdout इस पद्धति का उपयोग करने के लिए डीडीब सत्र लॉगआउटपुट के लिए ओपनोकैड रोकना शुरू करने के लिए GDB का लाभ है लॉग आउटपुट को एक उच्च डीबग स्तर के आउटपुट का उपयोग करते समय पाइप को संतृप्त नहीं किया जाता है यह सुनिश्चित करने के लिए फ़ाइल। जीओडीबी कमांड लाइन पर मॉनिटर मदद टाइप करें। 2.1 2 नमूना जीडीबी सत्र स्टार्टअप। रिमोट प्रोटोकॉल के साथ, जीडीबी सत्र शुरू से थोड़ा अलग वे स्थानीय रूप से डीबगिंग करते हैं तो ये करते हैं यहां एक उदाहरण दिया गया है कि कैसे एक छोटा एआरएम कार्यक्रम के साथ डीबग सत्र शुरू किया जा सकता है इस मामले में इस कार्यक्रम को कोर्टेक्स-एम 3 पर एसआरएएम में लोड किया गया था अधिकांश प्रोग्राम फ़्लैश एड्रेस 0 में लिखे जाएंगे और वहां से चलते हैं। तब आप कार्यक्रम के ब्रेक को बनाने के लिए जीडीबी सत्र को बाधित कर सकते हैं, स्टैक को दिखाने के लिए टाइप करें, प्रोग्राम काउंटर के चारों ओर कोड दिखाने के लिए सूची, कोड के माध्यम से कदम, ब्रेकपॉइं सेट करें टीएस या वॉचपॉइंट्स, और इतने पर .21 3 ओपनोकिड ओपनोकड के लिए जीडीबी कॉन्फ़िगर करना जीडीबी क्यूपपोर्टेड पैकेट का समर्थन करता है, इसने जीडीबी रिमोट सर्वर यानी ओपनोकिड टू जीडीबी को भेजा जा सकता है। सामान्य सूचना में पैकेट साइज और डिवाइस मे मेमरी मैप भी शामिल है। हाथ से पैकेट आकार को कॉन्फ़िगर करने की आवश्यकता नहीं है, और मेमोरी मानचित्र के संबंधित हिस्सों को स्वचालित रूप से सेट किया जाना चाहिए जब आप एनओआर फ्लैश बैंकों को घोषित करते हैं। फिर भी, ऐसी अन्य चीजें हैं जो जीडीबी वर्तमान में क्वेरी कर सकती हैं आपको उन्हें सेट अप करने की आवश्यकता हो सकती है ओपनोकडी शुरू होने पर, आप अक्सर एक लाइन की कुछ रिपोर्ट देखेंगे। आप इन सूचनाओं के साथ जीडीबी को उस जानकारी से गुज़र सकते हैं.उस विशेष हार्डवेयर कोर्टेक्स - एम 3 में हार्डवेयर ब्रेकपॉइंट केवल फ्लैश मेमोरी से चल रहे कोड के लिए काम करते हैं अधिकांश अन्य एआरएम सिस्टम ऐसे प्रतिबंध नहीं हैं। उपयोगी GDB कॉन्फ़िगरेशन का एक और उदाहरण एक उपयोगकर्ता से आया था, जिसने पाया कि एकल कार्टेक्स-एम 3 को एकमात्र कदम IRQs और एक आरटीओएस के साथ अच्छी तरह से काम नहीं करता जब तक कि वह जीडीबी को IRQs को अक्षम करने के लिए कहा, pping. Rather ऐसे कमांडों को इंटरैक्टिव टाइप करने से, आप उन्हें एक फ़ाइल में सहेजना पसंद कर सकते हैं और GDB उन्हें शुरू होने के रूप में निष्पादित कर सकते हैं, संभवतया आपकी प्रोजेक्ट डायरेक्टरी में या जीडीबी का उपयोग करते हुए जीडीबी - x फाइलनाम .21 4 जीडीबी का इस्तेमाल करके प्रोग्रामिंग। डिफ़ॉल्ट लक्ष्य मेमोरी मानचित्र GDB को भेजा जाता है यह निम्न ओपनोकिड कॉन्फ़िगरेशन विकल्प द्वारा निष्क्रिय किया जा सकता है। इसके लिए ठीक से कार्य करने के लिए एक वैध फ्लैश कॉन्फ़िगरेशन को ओपनोकडी में भी सेट किया जाना चाहिए तेज प्रदर्शन के लिए आपको एक वैध कार्य क्षेत्र भी कॉन्फ़िगर करना चाहिए। लक्ष्य के मेमोरी का नक्शा जीडीबी को लक्ष्य के किसी भी फ्लैश क्षेत्रों को संरक्षित करने और डिफ़ॉल्ट रूप से हार्डवेयर ब्रेकपॉइंट का उपयोग करने में सक्षम होगा इसका मतलब यह है कि OpenOCD विकल्प gdbbreakpointoverride की आवश्यकता नहीं है जब मेमोरी मानचित्र का उपयोग करें gdbbreakpointoverride देखें। GDB में कॉन्फ़िगर मेमोरी मानचित्र को देखने के लिए, जीडीबी कमांड इन्फॉर्मेशन मेम का उपयोग करें जीडीबी के भीतर अन्य सभी असाइन किए गए पते को रैम के रूप में माना जाता है। जीडीबी 6 8 और उच्चतम किसी मेमोरी एरिया को मेमोरी मैप में दुर्गम नहीं है जैसा कि यह दुर्गम है निम्नलिखित जीडीबी कमांड का उपयोग करते हुए पुराने व्यवहार को आच्छादित किया। यदि gdbflashprogram सक्षम भी प्रयोग किया जाता है, तो जीडीबी किसी भी फ्लैश मेमोरी को vFlash इंटरफ़ेस का उपयोग करने में सक्षम हो जाएगा। जीडीबी लक्ष्य मेमोरी मानचित्र पर दिखेगा जब लोड कमांड दी जाएगी, यदि कोई हो लक्षित फ्लैश क्षेत्र के भीतर प्रोग्राम किए जाने वाले क्षेत्रों में vFlash पैकेट का उपयोग किया जाएगा। यदि लक्ष्य को जीडीबी प्रोग्रामिंग से पहले कॉन्फ़िगर करने की आवश्यकता है, तो एक ईवेंट स्क्रिप्ट कार्यान्वित हो सकती है। किसी भी फ़्लैश प्रोग्रामिंग को सत्यापित करने के लिए जीडीबी कमांड तुलना-सेक्शन का उपयोग किया जा सकता है। जीडीबी के साथ ओपीओसीडी एसएमपी का उपयोग करना। एसएमपी समर्थन के बाद जीडीबी सीरियल प्रोटोकॉल पैकेट को परिभाषित किया गया है। जी - एसएमपी स्थिति अनुरोध। जे - जीएमबी कनेक्शन द्वारा प्रदर्शित कोर आईडी पढ़ने के लिए एसपीपी सेट अनुरोध। जेसी पैकेट उत्तर दें XXXXXXXX 8 हेक्स अंक कोर आईडी दे रहा है या लक्ष्य के लिए E01 नहीं smp. JcXXXXXXXX 8 हेक्स अंक पैकेट अगली जीडीबी में प्रदर्शित कोर आईडी को सेट करने के लिए जारी कोर आईडी -1 सामान्य रिजीव मोड पर लौटने के लिए आरक्षित है उत्तर के लिए E01 लक्ष्य नहीं smp या सफलता पर ठीक है। जीडीबी के भीतर इस पैकेट के हैंडलिंग कार्य किया जा सकता है। आंतरिक आवृत्तियों के माध्यम से कोर के निर्माण के माध्यम से कोर के जरिये जीडीबी कमांड को अनुमति दें। जीडीबी रखरखाव के उपयोग के अनुसार निम्नलिखित उदाहरण में वर्णित है: एसडीएम में सीपीयू के मुख्य आईडी 0 और 1 को देखें सीपीयू लक्ष्य को काम करना एसएमपी.21 में 6 आरटीओएस समर्थन। ओपनोकडी में आरटीओएस समर्थन शामिल है, हालांकि इसे निष्क्रिय करने के लिए डिफॉल्ट के रूप में सक्षम करने की आवश्यकता होगी। यह आरटीओएस प्रकार देखें, आरटीओएस प्रकार देखें। इसे आरटीओएस टाइप देखें। इसे डीडीगिंग प्रोग्राम देखें, जीडीबी मैनुअल में एकाधिक थ्रों के साथ विवरण के लिए प्रासंगिक जीडीबी कमांड के बारे में। एक उदाहरण सेटअप नीचे है। यह आपके अनुप्रयोग में आरटीओएस का स्वत: पता लगाने का प्रयास करेगा। वर्तमान में समर्थित आरटीओ शामिल हैं। नोट: आरटीओएस से पहले पता लगाया जा सकता है, इसे कुछ प्रतीकों को निर्यात करना चाहिए, अन्यथा इसे ओपनोकैड नीचे प्रत्येक समर्थित RTOS. txthreadcurrentptr, txthreadcreatedptr, txthreadcreatedcount. FreeRTOS प्रतीकों linux symbols. rlist, chdebug, chSysInit. Rtos sCurrentTask, Rtos एसएलआई के लिए आवश्यक प्रतीकों की एक सूची है आरटीओएस एसएलआईएसएसध्वनि, आरटीएस एसएलआईएसएससपेंडेंट, आरटीएस एसएक्ससप्रॉरिटीज, आरटीएस एसक्रैंटटसकाउंट। ओसआरलिंग, ओएसटीसीबीसीआरपीआर, ओस्टाकैकडीएलजीपीएलआर, ओस्टाकक्यूटी। उपरोक्त प्रतीकों का समर्थन करने वाले अधिकांश आरटीओएस डिफ़ॉल्ट रूप से निर्यात किए जाएंगे। कुछ के लिए, जैसे फ्रीआरटीओएस और यूसी ओएस -3, अतिरिक्त कदम होना चाहिए लिया। इन RTOSes को अतिरिक्त ओपनोकॉड-विशिष्ट फाइल की आवश्यकता हो सकती है, जो कि परियोजना के साथ जुड़ा हुआ है।
Comments
Post a Comment