Налагоджувати додаток Qt в ubuntu з дозволом root, використовуючи qt Creator


10

Можна запустити мою програму з привілеями root, використовуючи sudo:

sudo ./MyApp

Чи можна налагодити додаток Qt за допомогою привілеїв root за допомогою QtCreator? Як я можу це зробити в системі Ubuntu?

Відповіді:


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 з Super User Permissions та попросить кореневий пароль .


2
Це правильне рішення
Рей

2
що ми повинні додати в / etc / sudoers?
Necktwi

4
Не працює для мене, після введення пароля sudo Application Output повідомляє "Налагодження закінчилося", ніхто з вимикачів справді не ламається

Для запису "Вибір режиму" - це
Ерік

1

Я вирішив це, запустивши Qt Creator як root.

sudo /usr/bin/qtcreator

Тепер він отримає кореневий дозвіл програми, коли я компілюю і налагоджуватиму. Тепер можна налагодити моє додаток з привілеєм root.


3
Це дуже-дуже дурна справа. Я не намагаюся бути образливим. СТУПІД в тому сенсі, що робити це не розумно. І я впевнений, що більшість людей ніколи цього не зробить.
iharob


1
Не будьте користувачем Windows. Не запускайте все як корінь.
Шахбаз

1
Не робіть цього! Це може змінити право власності на вихідні файли, які ви зберігаєте при цій умові, а також право власності на ваш .pro.user та інші файли конфігурації Qt Creator. Коли ви перейдете на звичайний користувач, ви зіткнетеся з помилками і вам доведеться перестрибувати кілька обручів, щоб відновити все. Я дізнався це важким шляхом ...
BuvinJ

1

Запустити це як корінь - жахлива ідея. Натомість використовуйте джерело та змусьте qtcreator використовувати sudo для запуску gdb подібним чином. Потрібно запустити qtcreator з tty та auth sudo перед запуском qtcreator або налаштувати свого користувача на sudo без паролів (не рекомендується). Я буду кодувати більш повне рішення пізніше.

Код / налагодження зайняло у мене 1-2 години без попереднього знання QT. Більшість цього часу було витрачено на очікування завершення компіляції

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 (як root), а потім з'єднався з сервером за допомогою gdb від QtCreator. Ви б почали gdbserver із чимось подібним:

$ sudo gdbserver host:2345 ./MyApp

Тут ви розміщуєте сервер з портом 2345. Ви також можете перевірити, чи дійсно ваша програма працює з UID 0.

$ sudo ps -u

Тепер у Qt Creator перейдіть налагодження -> Почати налагодження -> Приєднати до запуску сервера налагодження. Заповніть форму ... найважливішим є адреса порту та сервера. Я вибрав 127.0.0.1 і 2345. Ви можете вибрати перерву в основному, щоб перерватися на початку програми. Сервер GDB не запускає програму, поки ви не підключитесь.


0

Наступні дії були рекомендовані на форумі підтримки Qt:

У Qt Creator додайте віддалений пристрій Linux у меню Опції -> Пристрої. Встановіть його адресу як localhost, а користувача як root. Створіть пару ключів аутентифікації та вставте відкритий ключ до /root/.ssh/authorized_keys. Потім клонуйте Комплект робочого столу в Опції -> Набори та встановіть пристрій для нового набору на пристрій, який ви створили на попередньому кроці.

Тепер, коли ви починаєте налагоджувати, Qt Creator повинен автоматично підключатися через ssh до localhost як root, запускати gdbserver та виконувати налагодження.

Він працює і для запуску без налагодження.

Можливо, вам слід встановити установку своєї програми на віддаленому хості, але це вже інша історія, і це робиться по-різному для Qmake та QBS.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.