Linux

Visual StudioでLinuxプログラムをリモートデバックする方法

Visual Studioで、Linuxのアプリ(プログラム)をWindowsからリモートでデバッグする方法を紹介します。

初めて使ってみましたが、意外とよくできています。

Visual Studioのインストールや基本的な操作は以下の記事を参照ください。

初心者向け Visual Studio 2022 インストール/ビルド/実行方法Windowsのプログラミングで必要な『Visual Studio 2022』の紹介です。 Visual Studio は、Win...

検証環境&事前確認

Linux: CentOS 7.6 (Ubuntuでも問題ありません)
Visual Studio 2022 (VS2019でもほぼ同じ操作です)

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. [接続マネージャー] ダイアログで、 [編集] ボタンを押して設定内容を確認します。

あとがき

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

Visual Studio 2022 と 2019 を比較! 違いは?Windowsのプログラミングで必要な『Visual Studio 2022』の紹介です。 Visual Studio は、Win...