क्यूटी निर्माता का उपयोग कर रूट अनुमति के साथ ubuntu पर डिबग क्यूटी आवेदन


10

sudoइस तरह से रूट प्राइवेटलीगेज के साथ मेरे एप्लिकेशन को चलाना संभव है :

sudo ./MyApp

क्या यह संभव है कि QtCreator का उपयोग करते हुए रूट प्राइवेटिलिज का उपयोग करते हुए मेरे क्यूटी एप्लिकेशन को डिबग करें? मैं उबंटू प्रणाली पर यह कैसे कर सकता हूं?

जवाबों:


14
  1. के लिए जाओ Tools-> Options-> Environment
  2. में टैबGeneral के तहत **System** Groupवहाँ एक है Terminalविकल्प
  3. डिफ़ॉल्ट मान पर सेट किया गया है /usr/bin/xterm -e। के साथ बदलें /usr/bin/xterm -e sudoया /usr/bin/gnome-terminal -x sudo
  4. प्रेस Applyऔर OK बटन
  5. मोड चयनकर्ता के तहत Projects, Runविकल्प पर क्लिक करें । Runसमूह बॉक्स के तहत चयन करें Run in Terminal

याद रखें: sudoविकल्प होना चाहिए

/etc/sudoersका उपयोग कर संपादित करेंsudo visudo

अगली बार जब आप प्रोग्राम चलाते हैं तो इसे नए xtermया gnome-terminal सुपर यूजर परमिशन के साथ मंगाया जाएगा और रूट पासवर्ड के लिए पूछेगा


2
यह सही समाधान है
रे

2
हमें / etc / sudoers में क्या जोड़ना चाहिए?
नेकटावी

4
मेरे लिए काम नहीं करता है, sudo पासवर्ड डालने के बाद एप्लिकेशन आउटपुट रिपोर्ट "डीबगिंग समाप्त हो गई है", कोई भी ब्रेकअप्स नहीं करता है वास्तव में टूट जाता है

रिकॉर्ड के लिए, "मोड सिलेक्टर" सबसे ऊपरी
एरिक

1

मैंने क्यूटी क्रिएटर को रूट के रूप में शुरू करके इसे हल किया।

sudo /usr/bin/qtcreator

जब मैं संकलित और डीबग करता हूं तो उसे एप्लिकेशन को रूट अनुमति मिल जाएगी। अब इसके मूल विशेषाधिकार के साथ मेरे आवेदन को डीबग करना संभव है।


3
यह एक बहुत ही मूर्खतापूर्ण बात है। मैं आक्रामक होने की कोशिश नहीं कर रहा हूं। STUPID इस अर्थ में कि यह करने के लिए एक स्मार्ट चीज नहीं है। और मुझे यकीन है कि ज्यादातर लोग कभी ऐसा नहीं करेंगे ।
इरोब


1
एक विंडोज़ उपयोगकर्ता मत बनो। सब कुछ जड़ के रूप में न चलाएं।
शहबाज

1
यह मत करो! यह स्रोत फ़ाइलों के स्वामित्व को बदल सकता है जिन्हें आप इस शर्त के तहत सहेजते हैं, साथ ही अपनी .pro.user, और अन्य Qt निर्माता कॉन्फ़िगरेशन फ़ाइलों के स्वामित्व को भी। जब आप एक नियमित उपयोगकर्ता के रूप में चलने के लिए वापस जाते हैं, तो आप त्रुटियों में भाग लेंगे और सब कुछ बहाल करने के लिए कुछ हुप्स के माध्यम से कूदना होगा। मैंने इसे कठिन तरीके से सीखा ...
बुविन जेआर

1

उस जड़ के रूप में चलाना एक भयानक विचार है। इसके बजाय, स्रोत का उपयोग करें, और qtcreator इस तरह से gdb लॉन्च करने के लिए sudo का उपयोग करें। यह आवश्यक है कि आप qtcreator लॉन्च करने से पहले एक tty और Corto sudo से qtcreator चलाएं, या अपने उपयोगकर्ता को पासवर्ड रहित sudo (अनुशंसित नहीं) के लिए कॉन्फ़िगर करें। मैं बाद में एक और पूर्ण समाधान कोड करूँगा।

यह मुझे क्यूटी के पूर्व ज्ञान के साथ 1-2 घंटे के कोड / डिबग में ले गया। अधिकांश उस समय को पूरा करने के लिए संकलन के इंतजार में बिताया गया था

https://gist.github.com/ppetraki/a0080da047047ea184c6

--- qtcreator-3.0.1.orig/src/plugins/debugger/gdb/gdbprocess.cpp +++ qtcreator-3.0.1/src/plugins/debugger/gdb/gdbprocess.cpp @@ -59,7 +59,11 @@ QByteArray GdbProcess::readAllStandardEr

void GdbProcess::start(const QString &cmd, const QStringList &args) { - m_gdbProc.setCommand(cmd, Utils::QtcProcess::joinArgs(args)); + QStringList sudoArgs; + sudoArgs << cmd << args; + QString sudoCmd = QString::fromUtf8("/usr/bin/sudo"); + + m_gdbProc.setCommand(sudoCmd, Utils::QtcProcess::joinArgs(sudoArgs)); m_gdbProc.start(); }


1

मैं एक टर्मिनल से GDB सर्वर (रूट के रूप में) से प्रोग्राम चलाऊंगा और फिर Qttreator से gdb के साथ सर्वर से जुड़ूंगा। आप कुछ इस तरह से gdbserver शुरू करेंगे:

$ sudo gdbserver host:2345 ./MyApp

यहां, आप सर्वर को 2345 पोर्ट के साथ होस्ट कर रहे हैं। आप यह भी जांच सकते हैं कि आपका आवेदन वास्तव में यूआईडी 0 के साथ चल रहा है या नहीं।

$ sudo ps -u

अब, क्यूटी निर्माता में, डीबग पर जाएं -> डिबगिंग शुरू करें -> रनिंग डीबग सर्वर से संलग्न करें। फॉर्म भरें ... सबसे महत्वपूर्ण है पोर्ट और सर्वर एड्रेस। मैंने 127.0.0.1 और 2345 को चुना। आप कार्यक्रम की शुरुआत में ब्रेक के लिए मुख्य रूप से ब्रेक का चयन कर सकते हैं। जब तक आप कनेक्ट नहीं करते तब तक GDB सर्वर प्रोग्राम शुरू नहीं करता है।


0

Qt समर्थन मंच पर निम्नलिखित क्रियाओं की सिफारिश की गई थी:

Qt Creator में, विकल्प -> डिवाइसेस में दूरस्थ लिनक्स डिवाइस जोड़ें। स्थानीय के रूप में अपना पता और उपयोगकर्ता को रूट के रूप में सेट करें। प्रमाणीकरण कुंजियों की एक जोड़ी बनाएँ और सार्वजनिक कुंजी पेस्ट करें /root/.ssh/authorized_keys। फिर विकल्प में डेस्कटॉप डेस्कटॉप क्लोन करें -> किट और पिछले कदम पर आपके द्वारा बनाई गई डिवाइस के लिए नई किट के लिए डिवाइस सेट करें।

अब, जब आप डिबगिंग शुरू करते हैं, तो Qt क्रिएटर को मूल रूप से ssh को लोकलहोस्ट से कनेक्ट करना चाहिए, gdbserver शुरू करना चाहिए और डीबगिंग करना चाहिए।

यह डिबगिंग के बिना भी चलने के लिए काम करता है।

शायद आपको दूरस्थ होस्ट पर अपने प्रोग्राम की स्थापना स्थापित करनी चाहिए, लेकिन यह एक अलग कहानी है और यह Qmake और QBS के लिए अलग तरह से किया गया है।

https://forum.qt.io/post/185983

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.