「設定 - リモートデバッグ」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
編集の要約なし
2行目: 2行目:
Visual Studio 2017以降では、Linuxで実行されている.NET CoreプロセスにSSH経由でアタッチできる。<br>
Visual Studio 2017以降では、Linuxで実行されている.NET CoreプロセスにSSH経由でアタッチできる。<br>
ここでは、デバッグのセットアップ方法とデバッグ方法について記載する。<br>
ここでは、デバッグのセットアップ方法とデバッグ方法について記載する。<br>
<br>
また、リモートマシンにおいて、CentOSとSUSEを使用している。<br>
<br><br>
<br><br>


58行目: 56行目:
*# もし、IoTまたは組み込みのプラットフォームをターゲットにしている場合は、画面右の[インストールの詳細]ウィンドウに移動して、<br>[C++によるLinux開発]の下で[オプションコンポーネント]を展開して、必要なコンポーネントを選択する。<br>[変更]ボタンを押下してインストールを行う。
*# もし、IoTまたは組み込みのプラットフォームをターゲットにしている場合は、画面右の[インストールの詳細]ウィンドウに移動して、<br>[C++によるLinux開発]の下で[オプションコンポーネント]を展開して、必要なコンポーネントを選択する。<br>[変更]ボタンを押下してインストールを行う。
*: <br>
*: <br>
* C#
* C#(.NET Core)
*# Visual Studioインストーラを起動する。<br>[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
*# Visual Studioインストーラを起動する。<br>[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
*# [ASP.NETとWeb開発]ワークロードまたは[.NET Coreクロスプラットフォーム開発]ワークロードのいずれかをインストールする。
*# [ASP.NETとWeb開発]ワークロードまたは[.NET Coreクロスプラットフォーム開発]ワークロードのいずれかをインストールする。
<br>
<br>
==== プロジェクトの新規作成 ====
==== プロジェクトの新規作成 ====
* C++
* C++
77行目: 74行目:
<br>
<br>
==== リモート接続の設定 ====
==== リモート接続の設定 ====
接続先のLinuxを指定するダイアログ(Connect to Remote System)が表示されるので次のように入力する。<br>
* C++
Host Name : ホスト名またはIPアドレス
*: 接続先のLinuxを指定するダイアログ(Connect to Remote System)が表示されるので次のように入力する。<br>
Port : 22
** Host Name : ホスト名またはIPアドレス
User Name : CentOSまたはSUSEで使用しているユーザ名
** Port : 22
Password : CentOSまたはSUSEで使用しているユーザ名のパスワード
** User Name : CentOSまたはSUSEで使用しているユーザ名
<br>
** Password : CentOSまたはSUSEで使用しているユーザ名のパスワード
<u>※注意</u><br>
*: <br>
<u>次回からは、自動的にリモート接続される。</u><br>
*: <u>※注意</u><br>
<u>リモート接続の再設定は、Visual Studioの[ツール]メニュー - [オプション] - [クロスプラットフォーム]からコネクションマネージャーで再設定できる。</u><br>
*: <u>次回からは、自動的にリモート接続される。</u><br>
*: <u>リモート接続の再設定は、Visual Studioの[ツール]メニュー - [オプション] - [クロスプラットフォーム]からコネクションマネージャーで再設定できる。</u><br>
*: <br>
* C#(.NET Core)
*: Visual Studioにおいて、[デバッグ] - [プロセスにアタッチ]を選択する。
*: [接続の種類]プルダウンを[SSH]を選択して、[接続ターゲット]項目にリモート先PCのIPアドレスまたはホスト名を入力する。
*: <br>
*: デバッグプロセスは、一意のプロセス名またはdotnetという名前のプロセスで実行される。
*: デバッグプロセスを探すには、[タイトル]列を確認する。この列には、デバッグプロセスのコマンドライン引数が表示される。
*: SSH経由のリモート先PCからのプロセスの一覧が、[プロセスにアタッチ]画面に表示される。
*: <br>
*: デバッグプロセスにアタッチするには、[アタッチ]ボタンを押下する。
*: 表示される画面において、デバッグするプログラムの種類を選択する。例えば、[マネージド(Unix用.NET Core)]等を選択する。
*: Visual Studioのデバッグ機能を使用して、プログラムをデバッグする。
<br><br>
<br><br>



2020年11月17日 (火) 15:14時点における版

概要

Visual Studio 2017以降では、Linuxで実行されている.NET CoreプロセスにSSH経由でアタッチできる。
ここでは、デバッグのセットアップ方法とデバッグ方法について記載する。


リモートマシンの設定

GDBとGDB Serverのインストール

Visual Studioからリモートデバッグができるように、CentOSまたはSUSEに必要なソフトウェアやライブラリをインストールする。

# CentOS 7
sudo yum install gcc make rsync gdb gdb-gdbserver zip curl

# CentOS 8
sudo dnf install gcc make rsync gdb gdb-gdbserver zip curl

# SUSE
sudo zypper install gcc make rsync gdb gdb-gdbserver zip 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++
    1. Visual Studioインストーラを起動する。
      [Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
    2. [その他のツールセット]項目から、[C++によるLinux開発]ワークロードを選択する。
    3. もし、IoTまたは組み込みのプラットフォームをターゲットにしている場合は、画面右の[インストールの詳細]ウィンドウに移動して、
      [C++によるLinux開発]の下で[オプションコンポーネント]を展開して、必要なコンポーネントを選択する。
      [変更]ボタンを押下してインストールを行う。

  • C#(.NET Core)
    1. Visual Studioインストーラを起動する。
      [Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
    2. [ASP.NETとWeb開発]ワークロードまたは[.NET Coreクロスプラットフォーム開発]ワークロードのいずれかをインストールする。


プロジェクトの新規作成

  • C++
    [ファイル]メニュー - [新規作成] - [Visual C++] - [クロスプラットフォーム] - [Linux]を展開し、C++によるLinux開発を選択する。

  • C#(.NET Core)
    [ファイル]メニュー - [新規作成] - [Visual C#] - [コンソールアプリケーション]または[クラスライブラリ]を選択する。


プロジェクトの全般設定

  • C++
    1. [プロジェクト]メニュー - [プロパティ]を選択する。
      (または、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[プロパティ]を選択する)
    2. [プロジェクトのプロパティ]画面が表示されるので、画面左の[全般]を選択して、画面右の[構成の種類]プルダウンから、開発するファイルの種類を選択する。
    3. 既定では、実行可能ファイル(.out)が選択されている。
      もし、スタティックライブラリまたはダイナミックライブラリの開発や既存のMakefileを使用する場合は変更する。


リモート接続の設定

  • C++
    接続先のLinuxを指定するダイアログ(Connect to Remote System)が表示されるので次のように入力する。
    • Host Name : ホスト名またはIPアドレス
    • Port : 22
    • User Name : CentOSまたはSUSEで使用しているユーザ名
    • Password : CentOSまたはSUSEで使用しているユーザ名のパスワード

    ※注意
    次回からは、自動的にリモート接続される。
    リモート接続の再設定は、Visual Studioの[ツール]メニュー - [オプション] - [クロスプラットフォーム]からコネクションマネージャーで再設定できる。

  • C#(.NET Core)
    Visual Studioにおいて、[デバッグ] - [プロセスにアタッチ]を選択する。
    [接続の種類]プルダウンを[SSH]を選択して、[接続ターゲット]項目にリモート先PCのIPアドレスまたはホスト名を入力する。

    デバッグプロセスは、一意のプロセス名またはdotnetという名前のプロセスで実行される。
    デバッグプロセスを探すには、[タイトル]列を確認する。この列には、デバッグプロセスのコマンドライン引数が表示される。
    SSH経由のリモート先PCからのプロセスの一覧が、[プロセスにアタッチ]画面に表示される。

    デバッグプロセスにアタッチするには、[アタッチ]ボタンを押下する。
    表示される画面において、デバッグするプログラムの種類を選択する。例えば、[マネージド(Unix用.NET Core)]等を選択する。
    Visual Studioのデバッグ機能を使用して、プログラムをデバッグする。



リモートデバッグの実行

実行する前に、[デバッグ]メニューからLinux Consoleウインドウを表示する。
リモートGDBデバッガを実行すると、実行結果がLinux Consoleウインドウに表示される。


備考

CentOSまたはSUSEのホームディレクトリ直下にprojectsディレクトリが作成されて、そこにプロジェクトが配置される。


日本語を使う時の問題点

ソースファイル(Visual Studio側もLinux側も)がShift JISで保存されるため文字化けが起きる。
外部エディタにてUTF-8で再保存して(Visual Studio側)、ビルドすると文字化けしない。