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

ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
編集の要約なし
1行目: 1行目:
== 概要 ==
== 概要 ==
Visual Studio 2017以降では、Linuxで実行されている.NET CoreプロセスにSSH経由でアタッチできる。<br>
Visual Studio 2012以降では、Windows-Windows間において、C#およびVB.NETをリモートデバッグすることができる。<br>
ここでは、デバッグのセットアップ方法とデバッグ方法について記載する。<br>
また、Visual Studio 2017以降では、Windows-Linux間において、.NET CoreプロセスにSSH経由でアタッチできる。<br>
<br>
ここでは、上記のデバッグの設定とデバッグ手順について記載する。<br>
<br><br>
<br><br>


== リモートマシンの設定 ==
== リモートマシンの設定 ==
===== GDBとGDB Serverのインストール =====
==== C++(Windows-Linux) ====
Visual Studioからリモートデバッグができるように、CentOSまたはSUSEに必要なソフトウェアやライブラリをインストールする。<br>
まず、Visual Studioからリモートデバッグができるように、GDB等の必要なライブラリをインストールする。<br>
  # CentOS 7
  # CentOS
  sudo yum install gcc make rsync gdb gdb-gdbserver zip curl
  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
  # SUSE
17行目: 16行目:
<br>
<br>
Visual Studio 2019を使用している場合は、以下のライブラリもインストールする。<br>
Visual Studio 2019を使用している場合は、以下のライブラリもインストールする。<br>
  # CentOS 7
  # CentOS
  sudo yum install ninja-build
  sudo yum install ninja-build
# CentOS 8
sudo dnf install ninja-build
   
   
  # SUSE
  # SUSE
  sudo zypper install ninja-build
  sudo zypper install ninja-build
<br>
<br>
 
次に、SSHサーバの設定を行う。<br>
===== SSHサーバの設定 =====
SSHサーバは、CentOSやSUSEを最小インストールした場合でもOpenSSHがインストールされるため、追加でインストールする必要はない。<br>
SSHサーバは、CentOSやSUSEを最小インストールした場合でもOpenSSHがインストールされるため、追加でインストールする必要はない。<br>
また、初期設定では、パスワード認証方式でのログインが可能となっている。<br>
また、初期設定では、パスワード認証方式でのログインが可能となっている。<br>
<br>
<br>
したがって、最低限必要な設定としては、セキュリティを考慮して、以下のようにrootアカウントの直接ログインの禁止設定を実施しておけばよい。<br>
したがって、最低限必要な設定として、セキュリティを考慮して、以下のようにrootアカウントの直接ログインの禁止設定を実施しておけばよい。<br>
  sudo vi /etc/ssh/sshd_config
  sudo vi /etc/ssh/sshd_config
   
   
47行目: 42行目:
  sudo firewall-cmd --add-service=ssh --permanent
  sudo firewall-cmd --add-service=ssh --permanent
  sudo firewall-cmd --reload
  sudo firewall-cmd --reload
<br>
==== C#またはVB.NET(Windows-Windows) ====
まず、以下に示すURLにアクセスして、Visual Studio向けのリモートツールをダウンロードおよびインストールする。<br>
https://docs.microsoft.com/ja-jp/visualstudio/debugger/remote-debugging-csharp?view=vs-2019<br>
<br>
次に、リモートツールの設定を行う。<br>
# リモートツールを起動する。<br>もし、リモートマシンに対する管理アクセス許可が無い場合は、リモートツールを[管理者として実行]を選択して起動する。<br><br>また、管理者として実行されているプロセスや別のユーザ(IIS等)で実行されているプロセスにアタッチする場合は、リモートツールを[管理者として実行]を選択して実行する。
#: <br>
# [リモート デバッグの構成]画面が表示される。(初めてリモートツールを起動する場合)<br>Windows Server 2008R2の場合、Windows Web Services API がインストールされていない場合は、[インストール]ボタンを押下する。
#: <br>
# リモートツールを使用するネットワークの種類を少なくとも1つ選択する。
#* ドメインを介して接続されている場合、[ドメインネットワーク]にチェックを入力する。
#* ワークグループまたはホームグループを介して接続されている場合、必要に応じて、[プライベートネットワーク]または[カジュアルネットワークまたは公衆ネットワーク]にチェックを入力する。
#: <br>
# [リモート デバッグの構成]画面にある[リモートデバッグの構成]ボタンを押下して、ファイアウォールを構成する。<br>ファイアウォールの構成が完了した後、リモートデバッガが起動して、[リモートデバッガー]画面が表示される。
#: <br>
# この時、リモートデバッガは接続を待機しているため、[リモートデバッガー]画面に表示されているサーバ名とポート番号を使用して、Visual Studioのリモート接続構成を設定する。
#: <br>
# リモートデバッガを停止するには、[リモートデバッガー]画面にある[ファイル]メニュー - [終了]を選択する。<br><br>リモートデバッガを再起動する場合は、[スタート]メニューから起動する、または、PowerShellまたはコマンドラインから以下のコマンドを実行する。
#: <code><リモートツールのインストールディレクトリ>\msvsmon.exe</code>
<br><br>
<br><br>


== Visual Studioの設定 ==
== Visual Studioの設定 ==
==== Visual Studioのセットアップ ====
==== Visual Studioのセットアップ ====
* C++
* C++(Windows-Linux)
*# Visual Studioインストーラを起動する。<br>[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
*# Visual Studioインストーラを起動する。<br>[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
*# [その他のツールセット]項目から、[C++によるLinux開発]ワークロードを選択する。
*# [その他のツールセット]項目から、[C++によるLinux開発]ワークロードを選択する。
59行目: 74行目:
*# Visual Studioインストーラを起動する。<br>[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
*# Visual Studioインストーラを起動する。<br>[Visual Studioインストーラ]画面にある[変更]ボタンを押下して、[ワークロード]タブを選択する。
*# [ASP.NETとWeb開発]ワークロードまたは[.NET Coreクロスプラットフォーム開発]ワークロードのいずれかをインストールする。
*# [ASP.NETとWeb開発]ワークロードまたは[.NET Coreクロスプラットフォーム開発]ワークロードのいずれかをインストールする。
*: <br>
* C#またはVB.NET(Windows-Windows)
*: 特になし。
<br>
<br>
==== プロジェクトの新規作成 ====
==== プロジェクトの新規作成 ====
* C++
* C++(Windows-Linux)
*: [ファイル]メニュー - [新規作成] - [Visual C++] - [クロスプラットフォーム] - [Linux]を展開し、C++によるLinux開発を選択する。
*: [ファイル]メニュー - [新規作成] - [Visual C++] - [クロスプラットフォーム] - [Linux]を展開し、C++によるLinux開発を選択する。
*: <br>
*: <br>
* C#(.NET Core)
* C#(.NET Core)
*: [ファイル]メニュー - [新規作成] - [Visual C#] - [コンソールアプリケーション]または[クラスライブラリ]を選択する。
*: [ファイル]メニュー - [新規作成] - [Visual C#] - [コンソールアプリケーション]または[クラスライブラリ]を選択する。
*: <br>
* C#(Windows-Windows)
*: [ファイル]メニュー - [新規作成] - [Visual C#]からどのプロジェクトを選択してもよい。
<br>
<br>
==== プロジェクトの全般設定 ====
==== プロジェクトの全般設定 ====
* C++
* C++(Windows-Linux)
*# [プロジェクト]メニュー - [プロパティ]を選択する。<br>(または、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[プロパティ]を選択する)
*# [プロジェクト]メニュー - [プロパティ]を選択する。<br>(または、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[プロパティ]を選択する)
*# [プロジェクトのプロパティ]画面が表示されるので、画面左の[全般]を選択して、画面右の[構成の種類]プルダウンから、開発するファイルの種類を選択する。
*# [プロジェクトのプロパティ]画面が表示されるので、画面左の[全般]を選択して、画面右の[構成の種類]プルダウンから、開発するファイルの種類を選択する。
74行目: 95行目:
<br>
<br>
==== リモート接続の設定 ====
==== リモート接続の設定 ====
* C++
* C++(Windows-Linux)
*: 接続先のLinuxを指定するダイアログ(Connect to Remote System)が表示されるので次のように入力する。<br>
*# 接続先のLinuxを指定するダイアログ(Connect to Remote System)が表示されるので次のように入力する。<br>
** Host Name : ホスト名またはIPアドレス
*#* Host Name : ホスト名またはIPアドレス
** Port : 22
*#* Port : 22
** User Name : CentOSまたはSUSEで使用しているユーザ名
*#* User Name : CentOSまたはSUSEで使用しているユーザ名
** Password : CentOSまたはSUSEで使用しているユーザ名のパスワード
*#* Password : CentOSまたはSUSEで使用しているユーザ名のパスワード
*: <br>
*: <br>
*: <u>※注意</u><br>
*: <u>※注意</u><br>
86行目: 107行目:
*: <br>
*: <br>
* C#(.NET Core)
* C#(.NET Core)
*: Visual Studioにおいて、[デバッグ] - [プロセスにアタッチ]を選択する。
*# Visual Studioにおいて、[デバッグ] - [プロセスにアタッチ]を選択する。
*: [接続の種類]プルダウンを[SSH]を選択して、[接続ターゲット]項目にリモート先PCのIPアドレスまたはホスト名を入力する。
*# [接続の種類]プルダウンを[SSH]を選択して、[接続ターゲット]項目にリモート先PCのIPアドレスまたはホスト名を入力する。
*#: <br>
*# デバッグプロセスは、一意のプロセス名またはdotnetという名前のプロセスで実行される。<br>デバッグプロセスを探すには、[タイトル]列を確認する。この列には、デバッグプロセスのコマンドライン引数が表示される。<br>SSH経由のリモート先PCからのプロセスの一覧が、[プロセスにアタッチ]画面に表示される。
*#: <br>
*# デバッグプロセスにアタッチするには、[アタッチ]ボタンを押下する。
*# 表示される画面において、デバッグするプログラムの種類を選択する。<br>例えば、WindowsとLinuxの間でデバッグする場合は、[マネージド(Unix用.NET Core)]等を選択する。
*# Visual Studioのデバッグ機能を使用して、プログラムをデバッグする。
*: <br>
*: <br>
*: デバッグプロセスは、一意のプロセス名またはdotnetという名前のプロセスで実行される。
* C#またはVB.NET(Windows-Windows)
*: デバッグプロセスを探すには、[タイトル]列を確認する。この列には、デバッグプロセスのコマンドライン引数が表示される。
*# Visual Studioのメイン画面から、[デバッグ]メニュー - [プロセスにアタッチ]を選択する。
*: SSH経由のリモート先PCからのプロセスの一覧が、[プロセスにアタッチ]画面に表示される。
*# [接続先]欄に、<code><リモートマシンのIPアドレスまたはホスト名>:<リモートデバッガのポート番号></code>を入力して、[検索]ボタンを押下する。
*# 接続に成功した場合、リモートマシンのユーザ名とパスワードを入力する。
*# リモートマシンのプロセス一覧が表示されるので、デバッグを行うソフトウェアを選択して、[アタッチ]ボタンを押下する。
*# アタッチに成功する時、通常デバッグを行う時と同様の画面に切り替わり、リモートデバッグが開始される。ブレークポイント等でステップが止まるかどうか等を確認する。
*: <br>
*: <br>
*: デバッグプロセスにアタッチするには、[アタッチ]ボタンを押下する。
*: <u>※注意</u>
*: 表示される画面において、デバッグするプログラムの種類を選択する。例えば、[マネージド(Unix用.NET Core)]等を選択する。
*: <u>ただし、ソースコードを修正する時、プロジェクトをビルドしてリモートマシンに配置する必要があるため、ビルドの出力先を共有ストレージ等に設定すると便利である。</u>
*: Visual Studioのデバッグ機能を使用して、プログラムをデバッグする。
*: <u>これは、プロジェクトのプロパティ画面左にある[ビルド] - [出力パス]項目において、リモートマシンに用意した共有ディレクトリのフルパスを入力することにより、自動で配置される。</u>
*: <u>自動で配置されたソフトウェアを起動して、プロセスにアタッチすればよい。</u>
<br><br>
<br><br>


== リモートデバッグの実行 ==
== リモートデバッグの実行 ==
実行する前に、[デバッグ]メニューからLinux Consoleウインドウを表示する。<br>
* C++(Windows-Linux)
リモートGDBデバッガを実行すると、実行結果がLinux Consoleウインドウに表示される。<br>
*# 実行する前に、[デバッグ]メニューからLinux Consoleウインドウを表示する。<br>
*# リモートGDBデバッガを実行すると、実行結果がLinux Consoleウインドウに表示される。<br>
<br><br>
<br><br>


== 備考 ==
== 備考 ==
CentOSまたはSUSEのホームディレクトリ直下にprojectsディレクトリが作成されて、そこにプロジェクトが配置される。<br>
* C++(Windows-Linux)
*: Linuxのホームディレクトリ直下にprojectsディレクトリが自動的に作成および配置される。<br>
<br><br>
<br><br>


== 日本語を使う時の問題点 ==
== 日本語を使う時の問題点 ==
ソースファイル(Visual Studio側もLinux側も)がShift JISで保存されるため文字化けが起きる。<br>
ソースファイル(Visual Studio側もLinux側も)がShift-JISで保存されるため文字化けが起きる。<br>
外部エディタにてUTF-8で再保存して(Visual Studio側)、ビルドすると文字化けしない。<br>
外部エディタにてUTF-8で再保存して(Visual Studio側)、ビルドすると文字化けしない。<br>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C++]][[カテゴリ:C_Sharp]]
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:C++]][[カテゴリ:C_Sharp]]

案内メニュー