मुझे लिनक्स में चल रहे सी ++ प्रोग्राम को डीबग करने के बारे में एक सवाल है। यदि कोई प्रोग्रामिंग पहले से चल रहा है और बाधित नहीं किया जा सकता है, तो उसे कैसे करें।लिनक्स में चल रहे सी ++ प्रोग्राम को डीबग कैसे करें?
मुझे तीन तरीकों से मिल सकता है, लेकिन मुझे विवरणों के बारे में बहुत कुछ पता नहीं है, अगर मैं इसे गहराई से विस्तारित कर सकता हूं तो मैं आभारी हूं।
1) हम इस प्रक्रिया आईडी
gdb -p PID
को निर्दिष्ट इस मामले में से GDB उपयोग कर सकते हैं, इस और attach PID
के बीच अंतर क्या है?
2) हम, pstat उपयोग कर सकते हैं हालांकि, मैं Ubuntu, कोई pstat का उपयोग कर रहा है, लेकिन केवल mpstat
ऐसा लगता है कि mpstat बहुत अधिक जानकारी इतने सारे विकल्प प्रदान नहीं करता है, और नहीं।
3) निर्देशिका ./proc
तहत विवरण जानकारी की जांच कर इस मामले में, बस पीआईडी के साथ निर्देशिका में जाते हैं। हालांकि, क्या यह मैन्युअल रूप से किया जाना चाहिए?
हो रही मुझे नहीं लगता कि मैं कभी भी '-p' विकल्प देखा है है के लिए
ps xa| grep myprogram
पसंद करते हैं। हालांकि पीआईडी द्वारा एक प्रक्रिया को जोड़ना काफी आम है। ऐसा करने में समस्या क्या है? – Cascabelमुझे यकीन नहीं है कि आपका प्रश्न वास्तव में क्या है। ऐसा लगता है कि आपके पास पहले से सी ++ प्रोग्राम डीबग करने के लिए काम करने के तरीके हैं, इस प्रकार आपका शीर्षक स्वयं उत्तर दिया गया है, और फिर आपका पोस्ट बॉडी कुछ असंबंधित पूछता है। क्या आप शीर्षक या अपने प्रश्न को स्पष्ट करने के लिए दोहरा सकते हैं? – ephemient
मैंने चल रहे C++ एप्लिकेशन की सिस्टम कॉल का पता लगाने के लिए 'strace -p pID' का उपयोग किया है। मैंने पाया कि 'खुला() 'पर कॉल विफल रहा था और त्रुटि केस उचित तरीके से संभाला नहीं जा रहा था। – jschmier