現在私のアプリケーションのリモートデバッグに問題がありますgdb
。リモートプロセスに接続し、IDE
ビジュアルデバッグ(私が使用する)を使用できるようにしたいですVisual Studio Code
。
問題は、IDEがそれを介してローカルプロセスに接続できるが、pid
それほど有用ではないということです。だから、ローカルポート転送を要求すると、ローカルポート転送を使用して接続できますが、これは私が本当に望むものではありません。
pid
実際にリモートプロセスであることを設定する「pid-forwarding」のようなタスクを実行することは可能ですか?
答え1
〜のようにビリー叔父つまり、これを行う良い方法は、GDBのリモートデバッグ機能を使用することです。これは、デバッグするプロセスを実行しているホストで「小さな」デバッガを実行し、gdb
開発環境を実行しているホストでそれに接続することによって行われます。 VS Codeを含む多くのIDEがデバッグをサポートしているためgdb
、他のプラットフォームを含むどこでも実行されるプロセスの開発環境を快適に使用できます。
デバッグするプロセスを実行しているホストにインストールしgdbserver
(通常は静的バイナリをコピーして)実行する必要があります。たとえば、次のようになります。
gdbserver --attach :9953 ${pid}
ポート 9953 にリストされ、指定されたプロセス ID に追加されます。サーバーに接続する複数の方法(シリアルポート、IPアドレス...)を指定することができ、デバッグ用のコマンドを実行したり、実行中のプロセスに接続したり、特定のプロセスなしで「デバッグサーバー」を実行したりできます。
開発環境があるホストでは、次の場所でターゲットに接続できますgdb
。
$ gdb ...
(gdb) target remote <IP address>:9953
他のすべてはいつものように続きます。gdb
必要なファイル(ライブラリなど)はリモートターゲットから送信されますが、速度を上げるためにファイルのローカルコピーを指すことがあります。ローカルリソースを使用します。
これは、両方のホストが同じ場合に期待どおりに機能しますが、他のホストでも機能するようにすることもできます。例えばLinuxシステムでWindowsプログラムをデバッグするか、より一般的には大規模開発プラットフォームの小型組み込みシステムで実行されているプログラムをデバッグします。