मेरे पास एक ऐसी प्रक्रिया है जिसे एक अन्य प्रक्रिया द्वारा बुलाया जाता है जिसे किसी अन्य प्रक्रिया द्वारा बुलाया जाता है और इसलिए विज्ञापन नबूज़ पर इसकी एक लंबी प्रक्रिया श्रृंखला में एक बाल प्रक्रिया है। यह प्रक्रिया दुर्घटनाग्रस्त है मैं यह प्रक्रिया जीडीबी में समझने के लिए क्यों यह दुर्घटनाग्रस्त करना चाहता हूं। हालांकि, एकमात्र तरीका मैं सोच सकता हूं: कमांडलाइन में मूल मूल प्रक्रिया शुरू करें। poll ps-c ltname प्रक्रिया मैं पकड़ो और पीआईडी प्राप्त करना चाहता हूँ। जीडीबी लॉन्च करें, जो कि प्रोसेस पीआईडी से जुड़ा है। यह बोझिल है लेकिन आम तौर पर नौकरी करता है समस्या यह है कि वर्तमान विफलता बहुत तेजी से चलती है, और जब तक मैं पीआईडी पर कब्जा कर लेता हूं और जीडीबी लॉन्च करता हूं, इसकी विफलता बिंदु पहले ही पारित हो जाती है मैं जीडीबी लॉन्च करना चाहूंगा: मैं ऐसा करना चाहूंगा: क्या ऐसा करने का कोई तरीका है, मैं लिनक्स पर जीडीबी 7.1 का उपयोग कर रहा हूं, वास्तव में आप क्या उम्मीद करते हैं, लेकिन यह आपको डीबग करने में मदद कर सकता है। प्रक्रिया के सभी बच्चों में मेमोरी त्रुटियों की जांच और प्रिंट करेंगे, स्टैक ट्रेस और त्रुटि के बारे में कुछ विवरण (जैसे डबल फ्री के मामले में, आप पहले फ्री के स्टैक ट्रेस प्राप्त करें)। इसके अलावा, आप क्रैशिंग प्रक्रिया को कोर डंप बना सकते हैं, और इस पोस्टमार्टम को डिबग कर सकते हैं। विवरण के लिए यह जवाब देखें.detach कमांड जीडीबी एक प्रक्रिया से अलग होने के बाद, यह प्रक्रिया इसके साथ जुड़ी कोई डीबगर के साथ चलती रहती है। तब आप संलग्न आदेश का उपयोग करके इसे वापस जोड़ सकते हैं। ध्यान दें कि आप कमांड अलग कर सकते हैं उन सभी मामलों में मान्य है: जब आप संलग्नक के साथ एक प्रक्रिया से जुड़ा हुआ है जब आप रन कमांड का उपयोग करते हुए एक प्रक्रिया शुरू करते हैं जब आप लक्ष्य कमांड का उपयोग करते हुए gdbserver से कनेक्ट करते हैं तो आप इसे से अलग करने की बजाय डीबग की गई प्रक्रिया समाप्त करें, मार कमांड का उपयोग करें। निम्नलिखित उदाहरण में हम जीडीबी को एक चलने वाली लिनक्स प्रोसेस में संलग्न करते हैं, इसे से अलग करें और दोबारा संलग्न करें: (जीडीबी) संलग्न करें 14199 प्रोसेस करने के लिए संलग्न 14199 hometestuser0.elf से प्रतीकों को पढ़ना। किया हुआ। Libi386-linux-gnulibc. so.6 से प्रतीकों को पढ़ना Usrlibdebuglibi386-linux-gnulibc-2.15 से प्रतीकों को पढ़ना। किया हुआ। किया हुआ। Libi386-linux-gnulibc. so.6 के लिए लोड किए गए प्रतीक। Libld-linux. so.2 से प्रतीकों को पढ़ना। Usrlibdebuglibi386-linux-gnuld-2.15 से प्रतीकों को पढ़ना। किया हुआ। किया हुआ। Kernelvsyscall () (gdb) अलग में libld-linux. so.2 0xb771f424 के लिए भारित प्रतीकों प्रोग्राम से हटाना: hometestuser0.elf, प्रक्रिया 14199 (gdb) संलग्न 14199 कार्यक्रम के लिए संलग्न: hometestuser0.elf, प्रक्रिया 14199 libi386-linux से प्रतीकों को पढ़ना - gnulibc. so.6। Usrlibdebuglibi386-linux-gnulibc-2.15 से प्रतीकों को पढ़ना। किया हुआ। किया हुआ। Libi386-linux-gnulibc. so.6 के लिए लोड किए गए प्रतीक। Libld-linux. so.2 से प्रतीकों को पढ़ना। Usrlibdebuglibi386-linux-gnuld-2.15 से प्रतीकों को पढ़ना। किया हुआ। किया हुआ। Libld-linux. so.2 के लिए भारित 0xb771f424 kernelvsyscall () (gdb) में VisualGDB के साथ संगतता विडियो स्टूडियो के अंतर्गत डिटेश कमांड मैन्युअल रूप से निष्पादित न करें। VisualGDB प्रोजेक्ट गुण संवाद का प्रयोग करें जब आप Shift-F5 के साथ डीबगिंग से बाहर निकलें तो विलग कमांड निष्पादित करने के लिए VisualGDB कॉन्फ़िगर करें।
No comments:
Post a Comment