Visual Studioで、Linuxのアプリ(プログラム)をWindowsからリモートでデバッグする方法を紹介します。
初めて使ってみましたが、意外とよくできています。
Visual Studioのインストールや基本的な操作は以下の記事を参照ください。


検証環境&事前確認

Linux: CentOS 7.6 (Ubuntuでも問題ありません)
Visual Studio 2022 (Windows)
Linux上でコンパイルとデバッガがリモート実行されるので、gcc と gdbが必要です。
$ gcc –version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
$ gdb –version
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
手順
1.事前準備
Linux用のアプリを作成する場合は、Visual Studio Installerで「C++によるLinux開発」を追加します。

2.プロジェクトの作成(1)
「新しいプロジェクトの作成」画面の上部にある検索ボックスに「Linux」と入力します。

3.プロジェクトの作成(2)
表示された「コンソールアプリ(Linux)」を選択して「次へ」ボタンをクリックします。
プロジェクトの名前を付けて「作成」ボタンをクリックします。

4.ビルド&実行
メニューから[ビルド]-[ソリューションのビルド]を選択します。
「Linux への接続」画面に、デバッグする環境のホスト名(IPアドレスでも可)、ポート、ユーザー名とパスワードを入力して[接続]ボタンをクリックします。

問題なければ、出力画面に「正常終了」が表示されます。
デバッグ画面
・WindowsからLinux上のアプリをデバッグ可能。
変数も参照可能で、ブレークポイントも有効です。
・printf文で出力した内容が[Linux コンソール ウィンドウ]に出力される。実行はLinux側で行われています。

少しハマるところ。エラーやワーニング
libc.so.pdbは読み込まていません
デバッグ実行の終了時に以下が表示されます。
とりあえず、無視して先に進んでもOKです。

以下で解決する可能性があります。(Ubuntuは実機で未確認です)
・Ubuntu の場合は、 libc6-dbg パッケージをインストール
・CentOSの場合は、「debuginfo-install -y coreutils 」でデバッグ情報をインストール
Unexpected GDB output from command -exec-next
実行時に以下のエラーが表示されます。

細かく調査できていませんが、gccとgdbを最新に更新したら、表示されなくなりました。
gdb-7.6.1-114.el7.x86_64 を gdb-7.6.1-120.el7.x86_64 にアップデート。
Linux コンソールウィンドウに変なwarning
[Linux コンソールウィンドウ]に変なワーニングが出力されます。
アプリのprintf()の出力はコンソールに正しく情報出ているので無視。
——————
[Linux コンソール ウィンドウ]
“warning: GDB: Failed to set controlling terminal: \350\250\261\345\217\257\343\201\225\343\202\214\343\201\246\343\201\204\343\201\252\343\201\204\346\223\215\344\275\234\343\201\247\343\201\231\n”
★ここに printf()の出力が表示されます。
——————
Linuxへの接続に失敗する場合
「Linuxへの接続」でビルドに失敗する場合には、SSHが設定されていない可能性があります。
事前に Tera Term (SSH)などでログインできるか確認しておきましょう。
VisualStudio側の接続設定の場合もあります。
接続マネージャーで確認可能です。
1. Visual Studio のメニューバーで [ツール] – [オプション] を選択して、[オプション]ダイアログを開きます。
その後、[クロス プラットフォーム] – [接続マネージャー] を選択。
2. [接続マネージャー] ダイアログで、 [編集] ボタンを押して設定内容を確認します。

あとがき
今回は、簡単なプログラムが動作するところまでを紹介しました。
有用なノウハウなど発見したら、追記していく予定です。
