私はlibpcapを使用してアプリケーションをプログラミングしています。通常モードでアプリケーションをデバッグすると、pcapがネットワークデバイスを取得できません。ルートでアプリケーションをデバッグする必要があるようです。ルートでアプリケーションをデバッグするにはどうすればよいですか? rootパスワードを持っています。 Eclipseには、デバッグアプリケーションのルートを追加できるオプションがあると思いますが、その方法がわかりません。助けてください。
Sudo visudo
_<youruser> ALL=(root) NOPASSWD:/usr/bin/gdb
gdb
から_Sudo -u <youruser> gdb
_に変更します更新(および警告!):
彼のコメントでnategooseは、この回答には警告が必要であることを指摘しました。
ユーザーがSudo
にgdb
を使用できるようにすることで、私の回答で提案されているように、実際にはユーザーに管理者権限が付与されます多くの場合、望ましくない副作用。したがって、ユーザーがシステムに危害を加えようとすることが想定されていない環境(例:自分のパソコンまたは仮想マシン)で適切な答えを考えます
マルチ(信頼されていない)ユーザー環境の場合、管理者を必要とせずにgdb
を有効にしてアプリケーションをデバッグするには、 nix 'ファイル機能 を利用する方が良いと思います。特権
SudoでEclipseを起動します(完全を期すために http://www.Eclipse.org/forums/index.php?t=msg&goto=516838& )
更新:xmoexソリューションに従ってください。 rootとしてEclipseを実行する場合(つまり、Sudoを使用する場合)、ファイルはroot所有になります...これはおそらく望ましくありません。
Localhostでgdbserverを使用して既存のプロセスをアタッチできます。以下はコマンドラインです。
Sudo gdbserver :<listening port> --attach <pid>
または、gdbserverを使用して新しいプロセスを作成できます。
Sudo gdbserver :<listening port> <process executable>
次に、Eclipse、デバッガータブ、デバッガー項目でデバッグ構成を作成し、gdbserverを選択して、次の接続タブにリスニングポートを入力します。
別の解決策は、あなた(またはgdb実行可能ファイル)に ここで言及 としてpcapキャプチャを作成する権利を与えることです。このようなもので:
setcap cap_net_raw,cap_net_admin=eip /usr/bin/gdb
ルートにならずにgdbへのパケットをキャプチャできるようにする必要があります。
この質問はずっと前に尋ねられましたが、これが誰かに役立つ場合は、bugzillaでバグを開いて、この短いスレッドが問題を解決しました: bugzilla bug
これが私がやった方法です:
C/C++リモートアプリケーションを作成する
への変更:
Sudo gdbserver :<port number> <path to application>;exit #
これは基本的にgdbserverを実行しますが、これは通常、Sudo内のEclipseによって実行され、末尾の '# 'は、Eclipseコマンドが実行されないようにします。