設定 - リモートデバッグ
概要
Visual Studio 2017以降では、Linuxで実行されている.NET CoreプロセスにSSH経由でアタッチできる。
ここでは、デバッグのセットアップ方法とデバッグ方法について記載する。
また、リモートマシンにおいて、CentOSとSUSEを使用している。
リモートマシンの設定
GDBとGDB Serverのインストール
Visual Studioからリモートデバッグができるように、CentOSまたはSUSEに必要なソフトウェアやライブラリをインストールする。
# CentOS 7 sudo yum install gcc rsync gdb gdb-gdbserver unzip curl # CentOS 8 sudo dnf install gcc rsync gdb gdb-gdbserver unzip curl # SUSE sudo zypper install gcc rsync gdb gdb-gdbserver unzip curl
Visual Studio 2019を使用している場合は、以下のライブラリもインストールする。
# CentOS 7 sudo yum install ninja-build # CentOS 8 sudo dnf install ninja-build # SUSE sudo zypper install ninja-build
SSHサーバの設定
SSHサーバは、CentOSやSUSEを最小インストールした場合でもOpenSSHがインストールされるため、追加でインストールする必要はない。
また、初期設定では、パスワード認証方式でのログインが可能となっている。
したがって、最低限必要な設定としては、セキュリティを考慮して、以下のようにrootアカウントの直接ログインの禁止設定を実施しておけばよい。
sudo vi /etc/ssh/sshd_config # /etc/ssh/sshd_configファイル PermitRootLogin no # 38行目
設定を反映させるため、sshdを再起動する。
sudo systemctl restart sshd
SSHの自動起動設定を行う。
sudo systemctl enable sshd
Firewalldを有効にしている場合は、SSHサービスの許可が必要である。
なお、SSHのポート番号は、22/TCPを使用する。
sudo firewall-cmd --add-service=ssh --permanent sudo firewall-cmd --reload
Visual Studioの設定
Visual Studioのセットアップ
- C++
- Visual Studioインストーラを起動する。
[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。 - [その他のツールセット]項目から、[C++によるLinux開発]ワークロードを選択する。
- もし、IoTまたは組み込みのプラットフォームをターゲットにしている場合は、画面右の[インストールの詳細]ウィンドウに移動して、
[C++によるLinux開発]の下で[オプションコンポーネント]を展開して、必要なコンポーネントを選択する。
[変更]ボタンを押下してインストールを行う。
- Visual Studioインストーラを起動する。
プロジェクトの新規作成
- C++
- [ファイル]メニュー - [新規作成] - [Visual C++] - [クロスプラットフォーム] - [Linux]を展開し、C++によるLinux開発を選択する。
- C#(.NET Core)
- [ファイル]メニュー - [新規作成] - [Visual C#] - [コンソールアプリケーション]または[クラスライブラリ]を選択する。
プロジェクトの全般設定
- C++
- [プロジェクト]メニュー - [プロパティ]を選択する。
(または、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[プロパティ]を選択する) - [プロジェクトのプロパティ]画面が表示されるので、画面左の[全般]を選択して、画面右の[構成の種類]プルダウンから、開発するファイルの種類を選択する。
- 既定では、実行可能ファイル(.out)が選択されている。
もし、スタティックライブラリまたはダイナミックライブラリの開発や既存のMakefileを使用する場合は変更する。
- [プロジェクト]メニュー - [プロパティ]を選択する。
リモート接続の設定
接続先のLinuxを指定するダイアログ(Connect to Remote System)が表示されるので次のように入力する。
Host Name : ホスト名またはIPアドレス Port : 22 User Name : CentOSまたはSUSEで使用しているユーザ名 Password : CentOSまたはSUSEで使用しているユーザ名のパスワード
※注意
次回からは、自動的にリモート接続される。
リモート接続の再設定は、Visual Studioの[ツール]メニュー - [オプション] - [クロスプラットフォーム]からコネクションマネージャーで再設定できる。
リモートデバッグの実行
実行する前に、[デバッグ]メニューからLinux Consoleウインドウを表示する。
リモートGDBデバッガを実行すると、実行結果がLinux Consoleウインドウに表示される。
備考
CentOSまたはSUSEのホームディレクトリ直下にprojectsディレクトリが作成されて、そこにプロジェクトが配置される。
日本語を使う時の問題点
ソースファイル(Visual Studio側もLinux側も)がShift JISで保存されるため文字化けが起きる。
外部エディタにてUTF-8で再保存して(Visual Studio側)、ビルドすると文字化けしない。