मैं libpcap का उपयोग कर प्रोग्रामिंग अनुप्रयोग कर रहा हूँ। जब मैं सामान्य मोड में एप्लिकेशन को डीबग करता हूं, तो पॅक नेटवर्क डिवाइस नहीं प्राप्त कर सकता है। ऐसा लगता है कि मुझे रूट में एप्लिकेशन को डीबग करना है। मैं रूट में एप्लिकेशन को डीबग कैसे कर सकता हूं? मेरे पास रूट पासवर्ड है। मुझे लगता है कि ग्रहण में ऐसा विकल्प है जो डिबगिंग एप्लिकेशन के लिए रूट जोड़ सकता है, लेकिन मुझे नहीं पता कि यह कैसे करें। कृपया मदद करें।उबंटू में ग्रहण में रूट के रूप में एप्लिकेशन को डीबग कैसे करें?
उत्तर
अपने निष्पादन के साथ निर्देशिका में कंसोल से:
sudo gdb ./my_program
ग्रहण दूरस्थ डीबगिंग का समर्थन करता है, तो आपको लगता है कि भले ही यह स्थानीय स्तर पर चल रहा है कर सकता है।
कंसोल से:
sudo gdbserver localhost:<port_number> ./my_program
और फिर बता पते (स्थानीय होस्ट और पोर्ट संख्या आपके द्वारा चुने गए) ग्रहण।
ओह हाँ, आपने कहा कि आप ऐसा कर रहे थे क्योंकि आप libpcap
का उपयोग कर रहे थे, इसलिए आप टीसीपी पर रिमोट डीबगिंग का उपयोग नहीं करना चाहेंगे क्योंकि आप अपने अन्य नेटवर्क यातायात के अतिरिक्त अपने डिबगिंग कनेक्शन पैकेट को कैप्चर करना समाप्त कर सकते हैं ।
उस स्थिति में आप एक सीरियल पोर्ट पर अपने रिमोट (लेकिन वास्तव में स्थानीय) डिबगिंग करते हैं। मैं इस एक स्थानीय मशीन पर कभी नहीं किया है, लेकिन आप दो वास्तविक सीरियल पोर्ट (उन्हें संलग्न हालांकि एक रिक्त मॉडेम) का उपयोग करें या एक psudoterminal का उपयोग कर की कोशिश कर सकते: आप
sudo gdbserver /dev/ptmx ./my_program
यह /dev/pts/
तहत psudoterminal पैदा करेगा लेकिन इसे इसके नाम का पता लगाना होगा, और यह इसे प्रतिबंधित अनुमतियों के साथ भी बना सकता है। आप उन चारों ओर मिल सकते हैं। जब तक आप रूट के रूप में बहुत सी टर्मिनल विंडो नहीं चला रहे हैं, तो यह संभावना नहीं है कि आपके पास रूट से संबंधित /dev/pts
के तहत कई प्रविष्टियां हैं, इसलिए ऊपर दिए गए आदेश को चलाने के बाद और sudo chmod
या sudo chown
इसे उपयोग करने योग्य बनाने के बाद ऐसा करने पर ध्यान दें अपने सामान्य उपयोगकर्ता के लिए और फिर अपने डीबगर को अपने रिमोट डीबगिंग लक्ष्य के लिए अपने सीरियल कनेक्शन के रूप में उपयोग करने के लिए बताएं।
लॉन्च ग्रहण sudo के साथ (बस संपूर्णता के लिए: http://www.eclipse.org/forums/index.php?t=msg&goto=516838&)
अद्यतन: xmoex समाधान का पालन करें। यदि आप ग्रहण को रूट के रूप में चलाते हैं (यानी सूडो का उपयोग करके) आपकी फाइलें रूट-स्वामित्व वाली होंगी ... जो आप शायद नहीं चाहते हैं।
sudo visudo
अन्य सभी नियमों के बाद निम्न पंक्ति जोड़ें::
यह एक अच्छा विचार नहीं है जैसा कि यहां बताया गया है: http://stackoverflow.com/questions/2580279/how-do-i-run-my-plplication-as-superuser-from-eclipse#comment2588681_2580560 –
मैं आपके साथ पाओलो से सहमत हूं , xmoex उत्तर एक बेहतर समाधान है। –
- किसी भी पासवर्ड के लिए पूछा जा रहा है बिना gdb रूट के रूप में चलाने के लिए अपने उपयोगकर्ता सक्षम
<youruser> ALL=(root) NOPASSWD:/usr/bin/gdb
- या eclipse में एक डिबग विन्यास को संशोधित रूट
जैसे जीडीबी चलाने के लिए भागो में> डीबग विन्यास> C/C++ अनुप्रयोग> YourProject डीबग:
परिवर्तन डीबगर> मुख्य> GDBgdb
सेsudo -u <youruser> gdb
अद्यतन (और चेतावनी के लिए डिबगर!):
उसकी टिप्पणी nategoose में बताया कि इस उत्तर के लिए एक चेतावनी के साथ आना चाहिए: एक उपयोगकर्ता को सक्षम करने से gdb
की तरह वास्तव में मेरा उत्तर में सुझाव के लिए sudo
उपयोग करने के लिए
उसे/उसके व्यवस्थापक विशेषाधिकार देता है जो कई मामलों में एक अवांछित साइड इफेक्ट हो सकता है। इसलिए मैं ऐसे माहौल में उपयुक्त उत्तर पर विचार करता हूं जहां यह नहीं माना जाता है कि उपयोगकर्ता सिस्टम को नुकसान पहुंचाने का प्रयास करेगा (उदाहरण के लिए यह आपका स्वयं का व्यक्तिगत कंप्यूटर या वर्चुअल मशीन है)
बहु-(गैर-भरोसेमंद) -सर पर्यावरण के लिए मैं इसे एक बेहतर idead व्यवस्थापक विशेषाधिकारों
मैंने डीडीगर को जीडीबी से सुडो जीडीबी में बदल दिया और यह काम करता है। – shahensha
शानदार उत्तर, दूसरों के लिए एक छोटी सी समस्या के लिए नोट करें, मैं ऐसा करने में भाग गया: मेरे पास LD_LIBRARY_PATH मेरे उपयोगकर्ता के रूप में सेट है लेकिन रूट में यह नहीं है, इसलिए मैंने इसे अपने सूडो कमांड में जोड़ा लेकिन सुडो आपको LD_LIBRARY_PATH सेट करने की अनुमति नहीं देता है इसलिए मैं इसे visudo में जोड़ा गया 'डिफ़ॉल्ट env_keep + = "LD_LIBRARY_PATH"' – stu
एक अन्य समाधान कुछ PCAP mentioned here के रूप में कब्जा करने के लिए आप (या gdb निष्पादन योग्य) अधिकार प्रदान करने के लिए है की आवश्यकता के बिना एक आवेदन डिबग करने के लिए सक्षम करने के लिए gdb
unix' file capabilities उपयोग करने के लिए हो सकता है लगता है। इस तरह कुछ के साथ:
setcap cap_net_raw,cap_net_admin=eip /usr/bin/gdb
आपको रूट के बिना gdb पर पैकेट को कैप्चर करने की अनुमति देने में सक्षम होना चाहिए।
यह सुपर उपयोगकर्ता के रूप में चलाने पर काम करता है। 'Gdbserver' – fredk
इस सवाल का एक लंबे समय पहले कहा गया था, लेकिन मैं बगजिला में एक बग खोलना अगर यह किसी को भी करने में मदद मिलेगी और इस छोटे से धागा समस्या हल: bugzilla bug
आप एक मौजूदा प्रक्रिया को संलग्न करने के लिए स्थानीय होस्ट पर gdbserver उपयोग कर सकते हैं , निम्न आदेश पंक्ति है:
sudo gdbserver :<listening port> --attach <pid>
या आप gdbserver का उपयोग कर एक नई प्रक्रिया बना सकते हैं:
sudo gdbserver :<listening port> <process executable>
फिर आप एक्लिप्स में डीबगिंग कॉन्फ़िगरेशन बना सकते हैं, डीबगर टैब में, डीबगर आइटम, gdbserver का चयन करें, और बोले में कनेक्शन टैब में सुनना बंदरगाह इनपुट करें।
सबसे आसान तरीका है, कोशिश sudo ./eclipse, तो हमेशा की तरह
पर पैक कैप्चर तक पहुंच प्रदान करके दूरस्थ डिबगिंग को भी आसान बना दिया गया है कृपया डुप्लिकेट उत्तर प्रदान न करें। – lnman
- 1. किसी एप्लिकेशन सर्वर में ग्रहण डीबग कोड कैसे करता है?
- 2. एक्सकोड में डेल्फी आईओएस फ़ायरमॉन्की एप्लिकेशन को डीबग कैसे करें?
- 3. नेटबीन्स में जावा वेब एप्लिकेशन को डीबग कैसे करें?
- 4. एम्बेडेड एप्लिकेशन में मेमोरी समस्याओं को डीबग कैसे करें
- 5. ग्रहण डीबग परिप्रेक्ष्य में धागे की पहचान कैसे करें?
- 6. ग्रहण: "के रूप में चलाएं" सूची तत्वों को प्रदर्शित नहीं करता है (जैसे कि "एंड्रॉइड एप्लिकेशन के रूप में चलाएं")
- 7. होम विकल्प के रूप में एप्लिकेशन को पंजीकरण कैसे करें
- 8. आंतरिक के बजाए किसी बाहरी ब्राउज़र में ग्रहण में PHP को डीबग कैसे करें?
- 9. जेनकींस में रूट के रूप में स्क्रिप्ट कैसे चलाएं?
- 10. मॉडल में डीबग कैसे करें?
- 11. सब्लिमे टेक्स्ट एडिटर से जावा एप्लिकेशन को डीबग कैसे करें
- 12. इंडेक्स.html को Nginx में रूट फ़ाइल के रूप में कैसे सेट करें?
- 13. जावा एप्लिकेशन विकल्प के रूप में चलाएं ग्रहण
- 14. ग्रहण: डीबग परिप्रेक्ष्य में टूटा हुआ होवर
- 15. मैं अपाचे दस्तावेज़ रूट को उबंटू में किसी विशिष्ट फ़ोल्डर में कैसे इंगित करूं?
- 16. ग्रहण (एंड्रॉइड डीबग के लिए) में लॉग कैट कैसे खोलें
- 17. रिलीज मोड में डीबग कैसे करें?
- 18. एक्लिप्स में डीबग कंसोल में जावा ऑब्जेक्ट के वर्तमान मान को कैसे मुद्रित करें?
- 19. ECLIPSE में .class फ़ाइलों को डीबग कैसे करें?
- 20. लिनक्स पर, ग्रहण सीडीटी में जीडीबी के साथ एक सी ++ एप्लिकेशन डीबग करना, stdin को कुछ इनपुट कैसे करें?
- 21. ग्रहण आंतरिक ब्राउज़र (उबंटू 12.10) को कैसे सक्षम करें?
- 22. डीबग ग्रहण आईडीई स्वयं
- 23. फ्लास्क: एप्लिकेशन रूट में फ़ाइल कैसे पढ़ा जाए?
- 24. डीबग ServletContextListener.contextDestroyed() ग्रहण
- 25. ग्रहण में व्यूपार्ट को कैसे बंद करें?
- 26. ग्रहण डीबग
- 27. डेस्कटॉप एप्लिकेशन के रूप में Django प्रोजेक्ट्स: कैसे करें?
- 28. उबंटू 11.04 में ऑटोकॉन्फ कैसे स्थापित करें?
- 29. एप्लिकेशन में संलग्नक के रूप में .vcf फ़ाइल को जोड़ने के लिए कैसे करें
- 30. उबंटू 11.04 में पीआईएल कैसे स्थापित करें?
मूल रूप से डिबग, रूट के रूप में अपने डिबगर चलाते हैं। क्या आप आईडीई के माध्यम से डीबगर का उपयोग करने की कोशिश कर रहे हैं? – Artelius
क्या आप मुझे बता सकते हैं कि रूट के रूप में डीबगर को कैसे चलाया जाए? हां, मैं ग्रहण आईडीई का उपयोग करता हूं। – futang
जब तक आप रूट के रूप में अपना आईडीई भी नहीं चला रहे हैं, तो रूट के रूप में आपके डीबगर को चलाने के लिए शायद कोई आसान या सीधा आगे नहीं है। – nategoose