web-dev-qa-db-ja.com

Qt Creatorを使用して、ルート権限でUbuntuでQtアプリケーションをデバッグします

次のように、Sudoを使用して、ルート特権でアプリケーションを実行できます。

Sudo ./MyApp

QtCreatorを使用してルート特権を使用してQtアプリケーションをデバッグすることはできますか? Ubuntuシステムでこれを行うにはどうすればよいですか?

10
Arun Kumar K S

ルートとしてQt Creatorを起動して解決しました。

Sudo /usr/bin/qtcreator

これで、コンパイルおよびデバッグするときに、アプリケーションへのルート権限が取得されます。これで、ルート権限でアプリケーションをデバッグできるようになりました。

1
Arun Kumar K S
  1. Tools-> Options-> Environmentに移動します
  2. **System** Groupの下のTab Generalには、Terminal Option
  3. デフォルト値はto/usr/bin/xterm -eに設定されています。 /usr/bin/xterm -e Sudoまたは/usr/bin/gnome-terminal -x Sudoに置き換えます。
  4. ApplyおよびOKボタンを押します。
  5. Mode Selectorの下でProjectsをクリックし、Runオプションを選択します。 Run Group Boxで、Run in Terminalを選択します。

要確認:Sudoオプションが必要です

編集/etc/sudoersを使用してSudo visudo

次にプログラムを実行すると、新しいxtermまたはgnome-terminalでスーパーユーザー権限で呼び出され、ルートパスワードを求めます

13
Jithin Mohan

これをrootとして実行するのは恐ろしいアイデアです。代わりに、ソースを使用し、qtcreatorがSudoを使用してこのようにgdbを起動するようにします。 qtcreatorを起動する前に、ttyからqtcreatorを実行し、Sudoを認証するか、パスワードなしの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
ppetraki

(ルートとして)GDBサーバーを備えた端末からプログラムを実行し、QtCreatorのgdbを使用してサーバーに接続します。次のようなものでgdbserverを起動します。

$ Sudo gdbserver Host:2345 ./MyApp

ここでは、ポート2345でサーバーをホストしています。アプリケーションが実際にUID 0で実行されているかどうかも確認できます。

$ Sudo ps -u

Qt Creatorで、[デバッグ]-> [デバッグの開始]-> [実行中のデバッグサーバーに接続]に移動します。フォームに入力します...最も重要なのはポートとサーバーのアドレスです。 127.0.0.1と2345を選択しました。プログラムの開始時に中断するようにmainで中断を選択できます。 GDBサーバーは、接続するまでプログラムを開始しません。

1
benzeno

Qtサポートフォーラムでは、次のアクションが推奨されました。

Qt Creatorの[オプション]-> [デバイス]でリモートLinuxデバイスを追加します。そのアドレスをローカルホストとして設定し、ユーザーをルートとして設定します。認証キーのペアを作成し、公開キーを/root/.ssh/authorized_keysに貼り付けます。次に、[オプション]-> [キット]でデスクトップキットのクローンを作成し、新しいキットのデバイスを前の手順で作成したデバイスに設定します。

これで、デバッグを開始すると、Qt Creatorはsshを介してlocalhostにrootとして自動的に接続し、gdbserverを起動してデバッグを実行します。

デバッグなしでも実行できます。

おそらく、リモートホストにプログラムのインストールをセットアップする必要がありますが、それは別の話であり、QmakeとQBSで異なる方法で実行されます。

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

0