次のように、Sudo
を使用して、ルート特権でアプリケーションを実行できます。
Sudo ./MyApp
QtCreatorを使用してルート特権を使用してQtアプリケーションをデバッグすることはできますか? Ubuntuシステムでこれを行うにはどうすればよいですか?
ルートとしてQt Creatorを起動して解決しました。
Sudo /usr/bin/qtcreator
これで、コンパイルおよびデバッグするときに、アプリケーションへのルート権限が取得されます。これで、ルート権限でアプリケーションをデバッグできるようになりました。
Tools-> Options-> Environment
に移動します**System** Group
の下のTab General
には、Terminal
Option。/usr/bin/xterm -e
に設定されています。 /usr/bin/xterm -e Sudo
または/usr/bin/gnome-terminal -x Sudo
に置き換えます。Apply
およびOK
ボタンを押します。Projects
をクリックし、Run
オプションを選択します。 Run
Group Boxで、Run in Terminal
を選択します。要確認:Sudo
オプションが必要です
編集/etc/sudoers
を使用してSudo visudo
次にプログラムを実行すると、新しいxterm
またはgnome-terminal
でスーパーユーザー権限で呼び出され、ルートパスワードを求めます。
これを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(); }
(ルートとして)GDBサーバーを備えた端末からプログラムを実行し、QtCreatorのgdbを使用してサーバーに接続します。次のようなものでgdbserverを起動します。
$ Sudo gdbserver Host:2345 ./MyApp
ここでは、ポート2345でサーバーをホストしています。アプリケーションが実際にUID 0で実行されているかどうかも確認できます。
$ Sudo ps -u
Qt Creatorで、[デバッグ]-> [デバッグの開始]-> [実行中のデバッグサーバーに接続]に移動します。フォームに入力します...最も重要なのはポートとサーバーのアドレスです。 127.0.0.1と2345を選択しました。プログラムの開始時に中断するようにmainで中断を選択できます。 GDBサーバーは、接続するまでプログラムを開始しません。
Qtサポートフォーラムでは、次のアクションが推奨されました。
Qt Creatorの[オプション]-> [デバイス]でリモートLinuxデバイスを追加します。そのアドレスをローカルホストとして設定し、ユーザーをルートとして設定します。認証キーのペアを作成し、公開キーを/root/.ssh/authorized_keys
に貼り付けます。次に、[オプション]-> [キット]でデスクトップキットのクローンを作成し、新しいキットのデバイスを前の手順で作成したデバイスに設定します。
これで、デバッグを開始すると、Qt Creatorはsshを介してlocalhostにrootとして自動的に接続し、gdbserverを起動してデバッグを実行します。
デバッグなしでも実行できます。
おそらく、リモートホストにプログラムのインストールをセットアップする必要がありますが、それは別の話であり、QmakeとQBSで異なる方法で実行されます。