Aplikasi Debug Qt di ubuntu dengan izin root menggunakan qt creator

10

Dimungkinkan untuk menjalankan aplikasi saya dengan hak akses root menggunakan sudo, seperti ini:

sudo ./MyApp

Apakah mungkin untuk men-debug aplikasi Qt saya menggunakan hak akses root menggunakan QtCreator? Bagaimana saya bisa melakukan ini pada sistem Ubuntu?

Arun Kumar KS
sumber

Jawaban:

14
  1. Pergi ke Tools-> Options-> Environment
  2. Di Tab diGeneral bawah **System** Groupada TerminalOpsi .
  3. Nilai default diatur ke /usr/bin/xterm -e. Ganti dengan /usr/bin/xterm -e sudoatau /usr/bin/gnome-terminal -x sudo.
  4. Tekan Applydan OK Tombol .
  5. Di bawah Mode Selector klik on Projects, pilih RunOption. Di bawah RunKotak Grup pilih Run in Terminal.

Ingat: sudoopsi harus ada di sana

Edit /etc/sudoers menggunakansudo visudo

Lain kali ketika Anda menjalankan program itu akan dipanggil dalam baru xtermatau gnome-terminal dengan Izin Pengguna Super dan akan meminta kata sandi root .

Jithin Mohan
sumber
2
Ini adalah solusi yang tepat
Ray
2
apa yang harus kita tambahkan di / etc / sudoers?
Necktwi
4
Tidak berfungsi untuk saya, setelah memasukkan kata sandi sudo Laporan Output Aplikasi "Debugging telah selesai", tidak ada satu pun dari breakponts yang benar-benar rusak
Sebagai catatan, "Mode Selector" adalah panel tombol paling kiri dengan Welcome di bagian paling atas
Eric
1

Saya menyelesaikannya dengan memulai Qt Creator sebagai root.

sudo /usr/bin/qtcreator

Sekarang akan mendapatkan izin root ke aplikasi ketika saya kompilasi dan debug. Sekarang mungkin untuk men-debug aplikasi saya dengan privilege root.

Arun Kumar KS
sumber
3
Itu hal yang sangat sangat sangat bodoh untuk dilakukan. Saya tidak berusaha untuk menyerang. BODOH dalam arti bahwa itu bukan hal yang cerdas untuk dilakukan. Dan saya yakin kebanyakan orang tidak akan pernah melakukan ini.
iharob
1
Jangan menjadi pengguna windows. Jangan jalankan semuanya sebagai root.
Shahbaz
1
Jangan lakukan ini! Ini dapat mengubah kepemilikan file sumber yang Anda simpan dalam kondisi ini, ditambah kepemilikan .pro.user Anda, dan file konfigurasi Qt Creator lainnya. Saat Anda kembali menjalankan sebagai pengguna biasa, Anda akan mengalami kesalahan dan harus melewati beberapa rintangan untuk memulihkan semuanya. Saya belajar ini dengan cara yang sulit ...
BuvinJ
1

Menjalankan itu sebagai root adalah ide yang mengerikan. Sebagai gantinya, gunakan sumbernya, dan buat qtcreator gunakan sudo untuk meluncurkan gdb seperti ini. Mengharuskan Anda menjalankan qtcreator dari sudo tty dan auth sebelum Anda meluncurkan qtcreator, atau mengonfigurasi pengguna Anda untuk sudo tanpa kata sandi (tidak disarankan). Saya akan kode solusi yang lebih lengkap nanti.

Saya butuh 1-2 jam kode / debug tanpa pengetahuan sebelumnya tentang QT. Sebagian besar waktu dihabiskan menunggu kompilasi selesai

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(); }

ppetraki
sumber
1

Saya akan menjalankan program dari terminal dengan server GDB (sebagai root) dan kemudian terhubung ke server dengan gdb dari QtCreator. Anda akan memulai gdbserver dengan sesuatu seperti ini:

$ sudo gdbserver host:2345 ./MyApp

Di sini, Anda meng-hosting server dengan port 2345. Anda juga dapat memeriksa apakah aplikasi Anda memang berjalan dengan UID 0.

$ sudo ps -u

Sekarang, di Qt Creator, buka Debug -> Mulai Debugging -> Lampirkan untuk Menjalankan Debug Server. Isi formulir ... yang paling penting adalah port dan alamat server. Saya memilih 127.0.0.1 dan 2345. Anda dapat memilih break at main untuk break di awal program. Server GDB tidak memulai program sampai Anda terhubung.

benzeno
sumber
0

Tindakan berikut direkomendasikan di forum dukungan Qt:

Dalam Qt Creator, tambahkan perangkat Linux jarak jauh di Opsi -> Perangkat. Tetapkan alamatnya sebagai localhost dan pengguna sebagai root. Buat sepasang kunci otentikasi dan tempelkan kunci publik ke /root/.ssh/authorized_keys. Kemudian klon Desktop kit di Opsi -> Kit dan atur perangkat untuk kit baru ke perangkat yang Anda buat pada langkah sebelumnya.

Sekarang, ketika Anda mulai men-debug, Qt Creator akan secara otomatis menghubungkan ssh ke localhost sebagai root, mulai gdbserver dan lakukan debugging.

Ini berfungsi untuk berjalan tanpa debugging juga.

Mungkin Anda harus mengatur instalasi program Anda pada host jarak jauh, tapi itu cerita yang berbeda dan dilakukan secara berbeda untuk Qmake dan QBS.

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

Alexandr Zarubkin
sumber