Depure a aplicação Qt no Ubuntu com permissão de root usando o qt creator

6

É possível executar meu aplicativo com privilégios de root usando sudo , assim:

sudo ./MyApp

É possível depurar meu aplicativo Qt usando privilégios de root usando o QtCreator? Como posso fazer isso em um sistema Ubuntu?

    
por Arun Kumar K S 08.01.2013 / 07:55

4 respostas

2

Eu resolvi isso iniciando o Qt Creator como root.

sudo /usr/bin/qtcreator

Agora ele irá obter a permissão de root para o aplicativo quando eu compilar e depurar. Agora é possível depurar meu aplicativo com privilégios de root.

    
por Arun Kumar K S 09.01.2013 / 13:51
12
  1. Ir para Tools-> Options-> Environment
  2. Na guia General , em **System** Group , há uma Terminal opção .
  3. O valor padrão é definido como /usr/bin/xterm -e . Substitua por /usr/bin/xterm -e sudo ou /usr/bin/gnome-terminal -x sudo .
  4. Pressione os botões Apply e OK .
  5. No Seletor de modos , clique em Projects , selecione Run Opção. Em Run Group Box , selecione Run in Terminal .

Lembre-se: a opção sudo deve estar lá

Editar /etc/sudoers usando sudo visudo

Na próxima vez que você executar o programa, ele será invocado em um novo xterm ou gnome-terminal com permissão de superusuário e solicitará a senha de root .

    
por Jithin Mohan 19.12.2015 / 08:11
1

Executar isso como root é uma ideia horrível. Em vez disso, use a origem e faça qtcreator usar o sudo para iniciar o gdb dessa maneira. Exige que você execute qtcreator a partir de um tty e auth sudo antes de iniciar o qtcreator, ou configure seu usuário para sudo sem senha (não recomendado). Codificarei uma solução mais completa depois.

Levei-me a 1-2 horas de código / depuração sem conhecimento prévio de QT. A maior parte desse tempo foi gasta esperando a compilação completar

link

--- 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 & amp; cmd, const QStringList & amp; 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 ();  }

    
por ppetraki 13.09.2015 / 23:45
0

Eu rodaria o programa de um terminal com um servidor GDB (como root) e então conectaria ao servidor com o gdb do QtCreator. Você iniciaria gdbserver com algo assim:

$ sudo gdbserver host:2345 ./MyApp

Aqui, você está hospedando o servidor com a porta 2345. Você também pode verificar se seu aplicativo está sendo executado com o UID 0.

$ sudo ps -u

Agora, no Qt Creator, vá em Debug - > Iniciar a depuração - > Anexar ao servidor de depuração em execução. Preencha o formulário ... o mais importante é o endereço da porta e do servidor. Eu escolhi 127.0.0.1 e 2345. Você pode selecionar break no main para quebrar no início do programa. O servidor GDB não inicia o programa até você se conectar.

    
por benzeno 13.05.2016 / 12:13