মূল অ্যাপিলিজেসগুলি ব্যবহার করে আমার অ্যাপ্লিকেশনটি চালানো সম্ভব sudo
:
sudo ./MyApp
আমার কিউটি অ্যাপ্লিকেশনটি কিউটিক্রিটার ব্যবহার করে রুট প্রিভিলিজেস ব্যবহার করে ডিবাগ করা সম্ভব? আমি কীভাবে এটি উবুন্টু সিস্টেমে করতে পারি?
মূল অ্যাপিলিজেসগুলি ব্যবহার করে আমার অ্যাপ্লিকেশনটি চালানো সম্ভব sudo
:
sudo ./MyApp
আমার কিউটি অ্যাপ্লিকেশনটি কিউটিক্রিটার ব্যবহার করে রুট প্রিভিলিজেস ব্যবহার করে ডিবাগ করা সম্ভব? আমি কীভাবে এটি উবুন্টু সিস্টেমে করতে পারি?
উত্তর:
Tools-> Options-> Environment
General
অধীনে **System** Group
একটা হল Terminal
অপশন ।/usr/bin/xterm -e
। এটি দিয়ে /usr/bin/xterm -e sudo
বা প্রতিস্থাপন করুন /usr/bin/gnome-terminal -x sudo
।Apply
এবং OK
বাটন ।Projects
, Run
বিকল্প নির্বাচন করুন । Run
গ্রুপ বাক্সের অধীনে নির্বাচন করুন Run in Terminal
।মনে রাখবেন: sudo
অপশন অবশ্যই থাকতে হবে
/etc/sudoers
ব্যবহার করে সম্পাদনা করুনsudo visudo
পরের বার আপনি যখন প্রোগ্রামটি চালাবেন এটি নতুন xterm
বা gnome-terminal
সুপার ব্যবহারকারী অনুমতি সহ ডাকা হবে এবং রুট পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে ।
আমি কিউটি ক্রিয়েটারকে মূল হিসাবে শুরু করে এটি সমাধান করেছি।
sudo /usr/bin/qtcreator
আমি যখন কম্পাইল এবং ডিবাগ করব তখন এটি অ্যাপ্লিকেশনটির মূল অনুমতি পাবে। এখন রুট সুবিধার সাথে আমার অ্যাপ্লিকেশনটি ডিবাগ করা সম্ভব।
মূল হিসাবে চালানো একটি ভয়ঙ্কর ধারণা। পরিবর্তে, উত্সটি ব্যবহার করুন এবং এইভাবে জিডিবি চালু করতে Qtcreator sudo ব্যবহার করুন। আপনি কিউটিক্রিটর চালু করার আগে একটি টিটিআই ও অথ সুডোর কাছ থেকে Qtcreator চালানোর প্রয়োজন হয় বা পাসওয়ার্ডহীন সুডোর জন্য আপনার ব্যবহারকারীকে কনফিগার করেন (প্রস্তাবিত নয়)। আমি পরে আরও একটি সম্পূর্ণ সমাধান কোড করব।
QT- এর পূর্বের জ্ঞান ছাড়াই আমাকে 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();
}
আমি জিডিবি সার্ভার (রুট হিসাবে) দিয়ে একটি টার্মিনাল থেকে প্রোগ্রামটি চালিত করব এবং তারপরে কিউটিক্রিয়েটর থেকে জিডিবি দিয়ে সার্ভারে সংযুক্ত করব। আপনি এই জাতীয় কিছু দিয়ে জিডিবার্সার শুরু করবেন:
$ sudo gdbserver host:2345 ./MyApp
এখানে, আপনি 2345 পোর্ট সহ সার্ভারটি হোস্ট করছেন your আপনার অ্যাপ্লিকেশনটি সত্যিই ইউআইডি 0 দিয়ে চলছে কিনা তাও আপনি পরীক্ষা করতে পারেন।
$ sudo ps -u
এখন, কিউটি ক্রিয়েটারে, ডিবাগ -> ডিবাগিং শুরু করুন -> চলমান ডিবাগ সার্ভারে সংযুক্ত করুন। ফর্মটি পূরণ করুন ... সর্বাধিক গুরুত্বপূর্ণ হ'ল বন্দর এবং সার্ভারের ঠিকানা। আমি 127.0.0.1 এবং 2345 পছন্দ করেছি You আপনি প্রোগ্রামের শুরুতে বিরতিতে প্রধানত বিরতি নির্বাচন করতে পারেন। আপনি সংযোগ না করা পর্যন্ত GDB সার্ভার প্রোগ্রাম শুরু করে না।
নিম্নলিখিত ক্রিয়াগুলি কিউটি সমর্থন ফোরামে প্রস্তাবিত হয়েছিল:
কিউটি ক্রিয়েটারে, বিকল্পগুলি -> ডিভাইসগুলিতে দূরবর্তী লিনাক্স ডিভাইস যুক্ত করুন। লোকালহোস্ট হিসাবে এর ঠিকানা এবং ব্যবহারকারী হিসাবে রুট হিসাবে সেট করুন। প্রমাণীকরণ কীগুলির একটি জুড়ি তৈরি করুন এবং এতে সর্বজনীন কী পেস্ট করুন /root/.ssh/authorized_keys
। তারপরে বিকল্পগুলিতে ডেস্কটপ কিটটি ক্লোন করুন -> কিটস এবং আপনার আগের পদক্ষেপে তৈরি করা ডিভাইসে নতুন কিটের জন্য ডিভাইসটি সেট করুন।
এখন, আপনি ডিবাগিং শুরু করার সময়, কিউটি ক্রিয়েটারটি স্বয়ংক্রিয়ভাবে ssh ওকে লোকালহোস্টের সাথে রুট হিসাবে সংযুক্ত হওয়া উচিত, gdbserver শুরু করুন এবং ডিবাগিং সম্পাদন করুন।
এটি খুব ডিবাগিং ছাড়াই চলমান কাজ করে।
আপনার নিজের প্রোগ্রামটি রিমোট হোস্টে স্থাপন করা উচিত, তবে এটি একটি আলাদা গল্প এবং এটি Qmake এবং QBS এর জন্য আলাদাভাবে সম্পন্ন হয়েছে।