回答:
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をrootとして起動して解決しました。
sudo /usr/bin/qtcreator
これで、コンパイルしてデバッグすると、アプリケーションへのルート権限が取得されます。root権限でアプリケーションをデバッグできるようになりました。
これをrootとして実行するのは恐ろしい考えです。代わりに、ソースを使用し、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としてlocalhostに接続し、gdbserverを起動してデバッグを実行します。
デバッグせずに実行することもできます。
おそらく、リモートホストにプログラムのインストールをセットアップする必要がありますが、それは別の話であり、QmakeとQBSでは異なる方法で行われます。