다음을 사용하여 루트 권한으로 응용 프로그램을 실행할 수 있습니다 sudo
.
sudo ./MyApp
QtCreator를 사용하여 루트 권한을 사용하여 Qt 애플리케이션을 디버깅 할 수 있습니까? 우분투 시스템에서 어떻게 할 수 있습니까?
답변
- 이동
Tools-> Options-> Environment
- 에서 탭
General
아래에**System** Group
가Terminal
옵션 . - 기본값은로 설정되어
/usr/bin/xterm -e
있습니다./usr/bin/xterm -e sudo
또는로 교체하십시오/usr/bin/gnome-terminal -x sudo
. Apply
및OK
버튼을 누릅니다 .- 아래 모드 셀렉터 를 클릭
Projects
선택Run
옵션을. 아래Run
그룹 상자 를 선택Run in Terminal
.
기억하십시오 : sudo
옵션이 있어야합니다
를 /etc/sudoers
사용하여 편집sudo visudo
당신이 새로운에서 호출되는 프로그램 실행 다음 번 xterm
또는 gnome-terminal
슈퍼 사용자 권한 것이다 루트 암호를 요청을 .
답변
Qt Creator를 루트로 시작하여 해결했습니다.
sudo /usr/bin/qtcreator
이제 컴파일하고 디버깅 할 때 응용 프로그램에 대한 루트 권한을 얻습니다. 이제 루트 권한으로 응용 프로그램을 디버깅 할 수 있습니다.
답변
루트로 실행하는 것은 끔찍한 생각입니다. 대신 소스를 사용하고 qtcreator가 sudo를 사용하여 이와 같이 gdb를 시작하게하십시오. qtcreator를 실행하기 전에 tty 및 auth sudo에서 qtcreator를 실행하거나 비밀번호없는 sudo를 사용하도록 사용자를 구성해야합니다 (권장되지 않음). 나중에 더 완벽한 솔루션을 코딩하겠습니다.
QT에 대한 사전 지식없이 1-2 시간 코드 / 디버그가 필요했습니다. 대부분의 시간은 컴파일이 완료되기를 기다리는 데 소비되었습니다.
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();
}
답변
루트로 GDB 서버가있는 터미널에서 프로그램을 실행 한 다음 QtCreator의 gdb를 사용하여 서버에 연결합니다. 다음과 같이 gdbserver를 시작하십시오.
$ sudo gdbserver host:2345 ./MyApp
여기에서 포트 2345를 사용하여 서버를 호스팅하고 있습니다. 응용 프로그램이 실제로 UID 0으로 실행 중인지 확인할 수도 있습니다.
$ sudo ps -u
이제 Qt Creator에서 디버그-> 디버깅 시작-> 실행중인 디버그 서버에 연결로 이동하십시오. 양식을 작성하십시오 … 가장 중요한 것은 포트 및 서버 주소입니다. 127.0.0.1과 2345를 선택했습니다. 프로그램 시작 부분에서 중단하도록 메인에서 중단을 선택할 수 있습니다. GDB 서버는 연결할 때까지 프로그램을 시작하지 않습니다.
답변
Qt 지원 포럼에서 다음 조치가 권장되었습니다.
Qt Creator에서 옵션-> 장치에 원격 Linux 장치를 추가하십시오. 주소를 localhost로, 사용자를 root로 설정하십시오. 인증 키 쌍을 만들고에 공개 키를 붙여 넣습니다 /root/.ssh/authorized_keys
. 그런 다음 옵션-> 키트에서 데스크탑 키트를 복제하고 새 키트의 장치를 이전 단계에서 만든 장치로 설정하십시오.
이제 디버깅을 시작할 때 Qt Creator는 ssh를 통해 root로 로컬 호스트에 자동으로 연결하고 gdbserver를 시작하고 디버깅을 수행해야합니다.
디버깅하지 않고도 실행할 수 있습니다.
원격 호스트에 프로그램 설치를 설정해야 할 수도 있지만 이는 다른 이야기이며 Qmake와 QBS에 대해 다르게 수행됩니다.