qt creator를 사용하여 루트 권한으로 우분투에서 Qt 응용 프로그램 디버그 루트 권한을 사용하여 Qt 애플리케이션을 디버깅

다음을 사용하여 루트 권한으로 응용 프로그램을 실행할 수 있습니다 sudo.

sudo ./MyApp

QtCreator를 사용하여 루트 권한을 사용하여 Qt 애플리케이션을 디버깅 할 수 있습니까? 우분투 시스템에서 어떻게 할 수 있습니까?



답변

  1. 이동 Tools-> Options-> Environment
  2. 에서 General 아래에 **System** GroupTerminal옵션 .
  3. 기본값은로 설정되어 /usr/bin/xterm -e있습니다. /usr/bin/xterm -e sudo또는로 교체하십시오 /usr/bin/gnome-terminal -x sudo.
  4. ApplyOK 버튼을 누릅니다 .
  5. 아래 모드 셀렉터 를 클릭 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에 대해 다르게 수행됩니다.

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


답변