Ubuntu'da Qt uygulamasında qt creator kullanarak kök izniyle hata ayıklama


10

Uygulamamı şu şekilde kullanarak kök ayrıcalıklarıyla çalıştırmak mümkündür sudo:

sudo ./MyApp

Qt uygulamamda QtCreator kullanarak kök ayrıcalıklarını kullanarak hata ayıklamak mümkün müdür? Bunu bir Ubuntu sisteminde nasıl yapabilirim?

Yanıtlar:


14
  1. Adresine git Tools-> Options-> Environment
  2. In TabGeneral altında **System** Groupbir var TerminalSeçeneği .
  3. Varsayılan değer olarak ayarlanmıştır /usr/bin/xterm -e. /usr/bin/xterm -e sudoVeya ile değiştirin /usr/bin/gnome-terminal -x sudo.
  4. Basın Applyve OK Düğmeler .
  5. Mod Seçici altında Projectsseçeneğine tıklayın, RunSeçenek'i seçin . RunGrup Kutusu altında öğesini seçin Run in Terminal.

Unutmayın: sudoseçenek orada olmalı

/etc/sudoersKullanarak düzenlesudo visudo

Eğer yeni bir yer çağrılır programını çalıştırmak dahaki sefere xtermveya gnome-terminal Süper Kullanıcı İzni ve edecektir kök şifre isteyecektir .


2
Bu doğru çözüm
Ray

2
/ etc / sudoers içine ne eklemeliyiz?
16:10 Necktwi

4
Benim için çalışmıyor, sudo şifresi girdikten sonra Uygulama Çıktı raporları "Hata ayıklama tamamlandı", hiçbir breakponts gerçekten tatili

Kayıt için, "Mod Seçici" en soldaki düğme panelidir ve en üstte Hoş Geldiniz
Eric

1

Qt Creator'ı root olarak başlatarak çözdüm.

sudo /usr/bin/qtcreator

Şimdi derlediğimde ve hata ayıkladığımda uygulamanın kök iznini alacak. Şimdi uygulamada ayrıcalıkla hata ayıklamak mümkün.


3
Bu çok aptalca bir şey. Saldırgan olmaya çalışmıyorum. Bunun akıllıca bir şey olmadığı anlamında STUPID. Ve eminim ki çoğu insan bunu ASLA yapmaz.
iharob


1
Windows kullanıcısı olma. Her şeyi kök olarak çalıştırmayın.
Shahbaz

1
Bunu yapma! Bu, bu koşul altında kaydettiğiniz kaynak dosyaların sahipliğini, ayrıca .pro.user ve diğer Qt Creator yapılandırma dosyalarının sahipliğini değiştirebilir. Normal bir kullanıcı olarak çalışmaya geri döndüğünüzde, hatalarla karşılaşırsınız ve her şeyi geri yüklemek için bazı halkalardan atlamanız gerekir. Bunu zor yoldan öğrendim ...
BuvinJ

1

Bunu kök olarak çalıştırmak korkunç bir fikirdir. Bunun yerine, kaynağı kullanın ve qtcreator'ın gdb'yi bu şekilde başlatmak için sudo kullanmasını sağlayın. Qtcreator'ı başlatmadan önce qtcreator'ı tty ve auth sudo'dan çalıştırmanızı veya kullanıcınızı şifresiz sudo için yapılandırmanızı gerektirir (önerilmez). Daha sonra daha eksiksiz bir çözümü kodlayacağım.

Daha önce QT bilgisi olmadan 1-2 saat kod / hata ayıklama beni aldı. Çoğu zaman derlemenin tamamlanmasını beklemek için harcandı

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

Programı bir GDB sunucusu (kök olarak) ile bir terminalden çalıştırmak ve daha sonra QtCreator gdb ile sunucuya bağlanmak. Gdbserver'a böyle bir şeyle başlıyorsunuz:

$ sudo gdbserver host:2345 ./MyApp

Burada sunucuyu 2345 numaralı bağlantı noktasıyla barındırıyorsunuz. Uygulamanızın gerçekten de UID 0 ile çalışıp çalışmadığını da kontrol edebilirsiniz.

$ sudo ps -u

Şimdi Qt Creator'da Hata Ayıkla -> Hata Ayıklamayı Başlat -> Çalışan Hata Ayıklama Sunucusuna Ekle seçeneğine gidin. Formu doldurun ... en önemlisi port ve sunucu adresidir. 127.0.0.1 ve 2345'i seçtim. Programın başlangıcında kırmak için ana mola vermeyi seçebilirsiniz. GDB sunucusu siz bağlanana kadar programı başlatmaz.


0

Qt destek forumunda aşağıdaki işlemler önerildi:

Qt Creator'da Seçenekler -> Aygıtlar'a uzak Linux aygıtını ekleyin. Adresini localhost ve kullanıcı olarak root olarak ayarlayın. Bir çift kimlik doğrulama anahtarı oluşturun ve genel anahtarı yapıştırın /root/.ssh/authorized_keys. Ardından Seçenekler -> Kitler içindeki Masaüstü kitini klonlayın ve yeni kit için cihazı önceki adımda oluşturduğunuz cihaza ayarlayın.

Şimdi, hata ayıklamaya başladığınızda, Qt Creator otomatik olarak ssh üzerinden localhost'a root olarak bağlanmalı, gdbserver'ı başlatmalı ve hata ayıklama gerçekleştirmelidir.

Hata ayıklama olmadan da çalışır.

Belki de programınızı uzak ana bilgisayara yüklemelisiniz, ancak bu farklı bir hikaye ve Qmake ve QBS için farklı şekilde yapıldı.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.