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?
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:
Tools-> Options-> EnvironmentGeneral altında **System** Groupbir var TerminalSeçeneği ./usr/bin/xterm -e. /usr/bin/xterm -e sudoVeya ile değiştirin /usr/bin/gnome-terminal -x sudo.Applyve OK Düğmeler .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 .
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.
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();
}
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.
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ı.