Отладка приложения Qt в Ubuntu с правами root с использованием Qt Creator


10

Можно запустить мое приложение с правами root, используя sudoэто:

sudo ./MyApp

Можно ли отладить мое приложение Qt с помощью привилегированных пользователей с помощью 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, выберите RunOption. Под RunGroup Box выберите Run in Terminal.

Помните: sudoопция должна быть там

Редактировать /etc/sudoers используяsudo visudo

В следующий раз, когда вы запустите программу, она будет запущена в новом xtermили gnome-terminal с разрешением суперпользователя и запросит пароль root .


2
Это правильное решение
Рэй

2
что мы должны добавить в / etc / sudoers?
Necktwi

4
У меня не работает, после ввода пароля sudo Выходные данные приложения сообщают, что «Отладка завершена», ни один из прерываний на самом деле не ломается


1

Я решил это, запустив Qt Creator от имени пользователя root.

sudo /usr/bin/qtcreator

Теперь он получит разрешение root для приложения, когда я скомпилирую и отладлю. Теперь возможно отладить мое приложение с привилегиями root.


3
Это очень, очень, очень глупая вещь. Я не пытаюсь быть оскорбительным. Глупый в том смысле, что это не умная вещь, чтобы сделать. И я уверен, что большинство людей никогда не будут делать это.
Ихароб


1
Не будь пользователем Windows. Не запускайте все как root.
Шахбаз

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

1

Запуск этого как root - ужасная идея. Вместо этого используйте исходный код и заставьте 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 перейдите в Debug -> Start Debugging -> Attach to Running Debug Server. Заполните форму ... наиболее важным является порт и адрес сервера. Я выбрал 127.0.0.1 и 2345. Вы можете выбрать break в main для разрыва в начале программы. Сервер GDB не запускает программу, пока вы не подключитесь.


0

На форуме поддержки Qt были рекомендованы следующие действия:

В Qt Creator добавьте удаленное устройство Linux в Параметры -> Устройства. Установите его адрес как localhost, а пользователя как root. Создайте пару ключей аутентификации и вставьте открытый ключ в /root/.ssh/authorized_keys. Затем клонируйте Desktop kit в Options -> Kits и установите устройство для нового набора на устройство, которое вы создали на предыдущем шаге.

Теперь, когда вы начинаете отладку, 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.