qtクリエーターを使用してroot権限でUbuntuでQtアプリケーションをデバッグする


10

次のように、を使用してroot権限でアプリケーションを実行できますsudo

sudo ./MyApp

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

回答:


14
  1. に行く Tools-> Options-> Environment
  2. ではタブGeneralの下に**System** GroupありますTerminal。オプション
  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、2016年

4
sudoのパスワードのアプリケーションの出力レポート「のデバッグが終了した」、本当にbreakpontsの誰も休憩に入った後、私のために動作しません

記録のために、「モードセレクター」は一番上にウェルカムがある一番左のボタンパネルです
Eric

1

Qt Creatorをrootとして起動して解決しました。

sudo /usr/bin/qtcreator

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


3
それは非常に愚かなことです。私は攻撃的になるつもりはありません。愚かなことは、賢いことではないという意味です。そして、私はほとんどの人がこれを決してしないだろうと確信しています。
iharob


1
Windowsユーザーにならないでください。すべてをrootとして実行しないでください。
Shahbaz 2016

1
これを行わないでください!これにより、この条件下で保存するソースファイルの所有権に加えて、.pro.userと他のQt Creator構成ファイルの所有権が変更される可能性があります。通常のユーザーとして実行するように切り替えると、エラーが発生し、すべてを復元するためにいくつかのフープをジャンプする必要があります。私はこれを難しい方法で学びました...
BuvinJ

1

これを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(); }


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としてlocalhostに接続し、gdbserverを起動してデバッグを実行します。

デバッグせずに実行することもできます。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.