2016-01-18 12 views
8

में रूट के साथ डीबगिंग प्रोजेक्ट एक प्रोजेक्ट के लिए जो मैं कर रहा हूं, जो स्कैपी और इसलिए सॉकेट का उपयोग करता है, मुझे रूट के रूप में डीबग करने में सक्षम होना चाहिए।PyDev/LiClipse

मुझे पहले ही पता चला है कि बिना किसी अनुमति के सिस्टम के बिना दुभाषिया को रूट के रूप में कैसे शुरू किया जाए। मैंने जोड़ा:

user  ALL=(root) NOPASSWD:/home/user/git/Project/bin/python2.7 

से /etc/sudoers.tmp। जिस मार्ग का मैंने उपयोग किया वह वर्चुअल वातावरण के पायथन दुभाषिया की ओर जाता है जिसका मैं इस प्रोजेक्ट के लिए उपयोग कर रहा हूं। लीक्लिप्स परियोजना भी इस पथ का उपयोग कर रही है। अब मुझे केवल लीक्लिप्स को दुभाषिया को रूट के रूप में चलाने की आवश्यकता है, लेकिन मैं लीक्लिप्स को रूट के रूप में शुरू नहीं करना चाहता हूं। मैं बस डीबगिंग करते समय इस दुभाषिया को रूट के रूप में उपयोग करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?

+0

@fabiozadrozny पुन: अपने टैग संपादित करें। प्रश्न में वास्तव में स्कैपी का उल्लेख किया गया है। चाहे वह 'pydev' से अधिक प्रासंगिक है, हालांकि राय का विषय है। –

+0

सहमत (वापस स्कैपी और बदली गई लाइलीप्से <> pydev (क्योंकि यह लाइलीप्से से पीईडीवीवी से अधिक संबंधित है)। –

उत्तर

2

इस मामले में, मैं दूरस्थ डीबगिंग का उपयोग करने का सुझाव देता हूं। इसके बाद आप जिस भी उपयोगकर्ता को इसकी आवश्यकता हो, प्रक्रिया चल सकती है, और आईडीई स्वतंत्र रूप से किसी अन्य उपयोगकर्ता के रूप में या किसी अन्य सर्वर पर भी चलाया जा सकता है।

मान लीजिए कि आप लीक्लिप्स में पीईडीवी का उपयोग कर रहे हैं, तो आप the documentation for remote debugging का पालन करके रिमोट डीबगिंग कॉन्फ़िगर कर सकते हैं।

import pydevd 
pydevd.settrace('localhost', port=7788, stdoutToServer=True, stderrToServer=True) 

तो फिर तुम एक pydev उदाहरण है कि सर्वर पर सुनने के साथ अपने आईडीई कॉन्फ़िगर (:

मूल आधार है कि आप अपने अजगर रास्ते पर pydev डिबगर पुस्तकालय जोड़ सकते हैं और निम्नलिखित शामिल हैं जहाँ आप एक ब्रेकपाइंट की जरूरत है 7788) इस मामले में।

आप आईडीई से ब्रेकपाइंट का उपयोग करना चाहते हैं, तो आप तर्क suspend=False जोड़ सकते हैं, और डीबगर को निलंबित नहीं किया जाएगा जब तक यह अपने breakpoints का सामना करना पड़ता।

+0

ठीक है, मैं कोशिश करूँगा! – vicco

+0

एक प्रश्न - मैं अपने वर्चुअल में 'pydevd.py' फ़ाइल कैसे जोड़ूं -environment दुभाषिए PYTHONPATH? – vicco

+0

मैं केवल PyCharm में इस किया है, और वितरण के बाद से 'pip' अंडे संभाल नहीं है। मैं नहीं जानता कि, एक अजगर अंडे कि मैं' उपयोग करते हुए मेरे virtualenv में easy_install' स्थापित होता है कि कैसे करने के लिए LiClipse/ग्रहण + PyDev का उपयोग कर करते हैं। –

2

PyDev में आप वास्तव में एक खोल स्क्रिप्ट है जो बदले में वास्तविक अजगर कार्यान्वित रन करने के लिए चुन सकते हैं ... तो, आप अपने खोल स्क्रिप्ट पहले किसी विशेष सेटअप करने के लिए कॉन्फ़िगर कर सकते हैं।

यानी .: अपनी स्क्रिप्ट जैसे सामग्री के साथ python_on_root.sh नाम की एक फ़ाइल हो सकता है:

#!/bin/bash 
source setup_env.bash 
sudo python "[email protected]" 

फिर, दुभाषिया विन्यास में, python_on_root.sh चयन एक दुभाषिया रूट के रूप में अमल होगा कि बनाने के लिए।

नोट है कि एक ही अन्य रोचक बातों के लिए किया जा सकता है - इस तरह के एक डोकर कंटेनर में चल रहे हैं या पहले एक conda पर्यावरण को सक्रिय करने के रूप में - आकाश सीमा है;)

+0

क्या है।? 'Setup_env.bash'? यह पहले से ही मौजूद है, या मैं इसे लिखने की क्या ज़रूरत है, भी?मैं वर्चुअल वातावरण में प्रवेश करने के लिए 'स्रोत सक्रिय' का उपयोग कर रहा हूं। और 'पायथन" $ @ "क्या करता है? – vicco

+1

यह केवल एक उदाहरण था कि आप क्या कर सकते हैं - यह अस्तित्व में नहीं है और न ही अस्तित्व में रहने की आवश्यकता है - यह दिखाने के लिए कि आप 'स्रोत' कुछ कर सकते हैं;) –

+0

ठीक है, मुझे sh फ़ाइल मिली - अब कैसे क्या मैं इस फ़ाइल को दुभाषिया कॉन्फ़िगरेशन मेनू में चुनता हूं? – vicco