Debuguj aplikację Qt na Ubuntu z uprawnieniami roota za pomocą kreatora qt


10

Możliwe jest uruchamianie mojej aplikacji z uprawnieniami roota za pomocą sudo:

sudo ./MyApp

Czy jest możliwe debugowanie mojej aplikacji Qt przy użyciu uprawnień roota przy użyciu QtCreator? Jak mogę to zrobić w systemie Ubuntu?

Odpowiedzi:


14
  1. Iść do Tools-> Options-> Environment
  2. W zakładceGeneral poniżej **System** Groupznajduje się Terminalopcja .
  3. Wartość domyślna to /usr/bin/xterm -e. Zamień na /usr/bin/xterm -e sudolub /usr/bin/gnome-terminal -x sudo.
  4. Naciśnij Applyi OK przyciski .
  5. W obszarze wyboru trybu kliknij na Projects, wybierz Runopcję. W Runpolu Group Group wybierz Run in Terminal.

Pamiętaj: sudoopcja musi być dostępna

Edytuj /etc/sudoers za pomocąsudo visudo

Następnym razem, gdy uruchomisz program, zostanie on wywołany w nowej wersji xtermlub gnome-terminal z uprawnieniem superużytkownika i poprosi o hasło roota .


2
To właściwe rozwiązanie
Ray,

2
co powinniśmy dodać w / etc / sudoers?
Necktwi

4
Nie działa dla mnie, po wpisaniu sudo raporty hasło aplikacji Output „debugowanie zakończył”, nikt z breakponts naprawdę przerwy

Dla przypomnienia, „Selektor trybów” to panel przycisków znajdujący się najbardziej po lewej stronie, z Welcome na samym szczycie
Eric

1

Rozwiązałem to, uruchamiając Qt Creator jako root.

sudo /usr/bin/qtcreator

Teraz otrzyma uprawnienia root do aplikacji, kiedy będę kompilować i debugować. Teraz możliwe jest debugowanie mojej aplikacji z uprawnieniami roota.


3
To bardzo, bardzo głupia rzecz. Nie próbuję być obraźliwy. GŁUPIE w tym sensie, że nie jest to mądre. I jestem pewien, że większość ludzi NIGDY tego nie zrobi.
iharob


1
Nie bądź użytkownikiem systemu Windows. Nie uruchamiaj wszystkiego jako root.
Shahbaz

1
Nie rób tego! Może to zmienić własność plików źródłowych zapisanych w tych warunkach, a także własność .pro.user i innych plików konfiguracyjnych Qt Creator. Po przywróceniu działania jako zwykły użytkownik napotkasz błędy i będziesz musiał skakać przez kilka obręczy, aby przywrócić wszystko. Nauczyłem się tego na
własnej skórze

1

Uruchamianie go jako root to okropny pomysł. Zamiast tego użyj źródła i spraw, aby qtcreator użył sudo do uruchomienia gdb w ten sposób. Wymaga uruchomienia qtcreatora z tty i auth sudo przed uruchomieniem qtcreator lub skonfigurowania użytkownika do sudo bez hasła (niezalecane). Później koduję bardziej kompletne rozwiązanie.

Zajęło mi to 1-2 godziny kodu / debugowania bez wcześniejszej wiedzy o QT. Większość czasu spędzono na oczekiwaniu na zakończenie kompilacji

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

Chciałbym uruchomić program z terminala z serwerem GDB (jako root), a następnie połączyć się z serwerem za pomocą gdb z QtCreator. Uruchomiłbyś gdbserver z czymś takim:

$ sudo gdbserver host:2345 ./MyApp

Tutaj hostujesz serwer z portem 2345. Możesz również sprawdzić, czy twoja aplikacja rzeczywiście działa z UID 0.

$ sudo ps -u

Teraz w Qt Creator przejdź do Debuguj -> Rozpocznij debugowanie -> Dołącz do działającego serwera debugowania. Wypełnij formularz ... najważniejszy jest port i adres serwera. Wybrałem 127.0.0.1 i 2345. Możesz wybrać break at main, aby break na początku programu. Serwer GDB nie uruchamia programu, dopóki się nie połączysz.


0

Na forum wsparcia Qt zalecane były następujące działania:

W Qt Creator dodaj zdalne urządzenie Linux w Opcje -> Urządzenia. Ustaw adres jako localhost, a użytkownik jako root. Utwórz parę kluczy uwierzytelniających i wklej klucz publiczny do /root/.ssh/authorized_keys. Następnie sklonuj zestaw pulpitu w Opcje -> Zestawy i ustaw urządzenie dla nowego zestawu na urządzenie utworzone w poprzednim kroku.

Teraz, kiedy zaczniesz debugować, Qt Creator powinien automatycznie połączyć się przez ssh z localhost jako root, uruchomić gdbserver i wykonać debugowanie.

Działa również do uruchamiania bez debugowania.

Być może powinieneś skonfigurować instalację swojego programu na zdalnym hoście, ale to inna historia i jest inaczej w Qmake i QBS.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.