qt creator를 사용하여 루트 권한으로 우분투에서 Qt 응용 프로그램 디버그


10

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

sudo ./MyApp

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

답변:


14
  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 슈퍼 사용자 권한 것이다 루트 암호를 요청을 .


2
이것이 올바른 해결책입니다
Ray

2
/ etc / sudoers에 무엇을 추가해야합니까?
Necktwi

4
sudo는 암호 응용 프로그램 출력 보고서 "디버깅 완료"정말 breakponts의 아무도 휴식 입력 한 후, 나를 위해 작동하지 않습니다

기록을 위해 "Mode Selector"는 맨 왼쪽에 Welcome이있는 가장 왼쪽에있는 단추 패널입니다.
Eric

1

Qt Creator를 루트로 시작하여 해결했습니다.

sudo /usr/bin/qtcreator

이제 컴파일하고 디버깅 할 때 응용 프로그램에 대한 루트 권한을 얻습니다. 이제 루트 권한으로 응용 프로그램을 디버깅 할 수 있습니다.


3
그것은 매우 멍청한 일입니다. 나는 공격적이지 않습니다. 똑똑한 일이 아니라는 점에서 STUPID. 그리고 대부분의 사람들이 것이라고 확신 결코 이 작업을 수행하지 않습니다.
iharob


1
Windows 사용자가 아닙니다. 모든 것을 루트로 실행하지 마십시오.
Shahbaz

1
이러지 마! 이는이 조건에서 저장 한 소스 파일의 소유권과 .pro.user 및 기타 Qt Creator 구성 파일의 소유권을 변경할 수 있습니다. 일반 사용자로 다시 실행으로 전환하면 오류가 발생하여 모든 후프를 뛰어 넘겨 모든 것을 복원해야합니다. 나는 이것을 어려운 방법으로 배웠습니다 ...
BuvinJ

1

루트로 실행하는 것은 끔찍한 생각입니다. 대신 소스를 사용하고 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(); }


1

루트로 GDB 서버가있는 터미널에서 프로그램을 실행 한 다음 QtCreator의 gdb를 사용하여 서버에 연결합니다. 다음과 같이 gdbserver를 시작하십시오.

$ sudo gdbserver host:2345 ./MyApp

여기에서 포트 2345를 사용하여 서버를 호스팅하고 있습니다. 응용 프로그램이 실제로 UID 0으로 실행 중인지 확인할 수도 있습니다.

$ sudo ps -u

이제 Qt Creator에서 디버그-> 디버깅 시작-> 실행중인 디버그 서버에 연결로 이동하십시오. 양식을 작성하십시오 ... 가장 중요한 것은 포트 및 서버 주소입니다. 127.0.0.1과 2345를 선택했습니다. 프로그램 시작 부분에서 중단하도록 메인에서 중단을 선택할 수 있습니다. GDB 서버는 연결할 때까지 프로그램을 시작하지 않습니다.


0

Qt 지원 포럼에서 다음 조치가 권장되었습니다.

Qt Creator에서 옵션-> 장치에 원격 Linux 장치를 추가하십시오. 주소를 localhost로, 사용자를 root로 설정하십시오. 인증 키 쌍을 만들고에 공개 키를 붙여 넣습니다 /root/.ssh/authorized_keys. 그런 다음 옵션-> 키트에서 데스크탑 키트를 복제하고 새 키트의 장치를 이전 단계에서 만든 장치로 설정하십시오.

이제 디버깅을 시작할 때 Qt Creator는 ssh를 통해 root로 로컬 호스트에 자동으로 연결하고 gdbserver를 시작하고 디버깅을 수행해야합니다.

디버깅하지 않고도 실행할 수 있습니다.

원격 호스트에 프로그램 설치를 설정해야 할 수도 있지만 이는 다른 이야기이며 Qmake와 QBS에 대해 다르게 수행됩니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.