troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Linux 上の .NET アプリを Visual Studio でリモートデバッグ


概要

Linux 上の .NET アプリを Visual Studio でリモートデバッグする方法を紹介します。

内容

Visual Studio 2015 Update 2 以降を利用すると、Linux 上の .NET アプリを Visual Studio でリモートデバッグできます。

1. Visual C++ iOS 開発のインストール
Visual C++ iOS 開発のインストールが必要です。
(.NET アプリのデバッグですが、「Visual C++ iOS 開発」で間違いありません。)

1.1. 「プログラムと機能」の Visual Studio 2015 のエントリを右クリックし「変更」をクリックします。


1.2. 「変更」をクリックします。


1.3. 「Visual C++ iOS 開発」にチェックを入れ更新を実行します。


2. 証明書を使た Linux への SSH 接続の準備
2.1. PuTTY のサイトより、plink.exe、puttygen.exe をダウンロードします。


2.2. 公開鍵、秘密鍵を作成するため、puttygen.exe を実行します。

2.3. 「Generate」をクリックし、空白部分でマウスを動かします。


2.4. 「Save private key」をクリックし、秘密鍵を任意の場所に保存します。


2.5. 「Public key for pasting into OpenSSH authorized_keys file:」は後で使用するので、コピーしておきます。


2.6. Linux にログインします。

2.7. 「~/.ssh/authorized_keys」を開き、上記2.5. の部分を貼り付けます。

authorized_keys がない場合は、以下のコマンドを実行し、作成します。

mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys


3. Linux に.NET Core をインストール
Linux に.NET Core をインストールします。
以下は、Ubuntu 16.04 での手順です。最新の手順や、その他のディストリビューションにつきましては、Microsoft のサイトをご確認ください。

3.1. apt-get で.NET Core をインストールできるようにします。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update


3.2. .NET Core SDK をインストールします。
sudo apt-get install dotnet-dev-1.0.0-preview2-003131

4. C# アプリを作成
4.1. 任意のフォルダーを作成し、C# コードの初期化を実行します。

mkdir dbgtest
cd dbgtest
dotnet new


4.2. 作成された「Program.cs」を開き、C# コードを編集します。
今回は以下のようなアプリを作成しました。

using System;
using System.Threading;
 
namespace ConsoleApplication
{
    public class Program
    {
        static void mymethod(int i)
        {
            Console.WriteLine(i);
            i = i + 5;
            Console.WriteLine(i);
        }
 
        public static void Main(string[] args)
        {
            mymethod(5);
        }
    }
}

4.3. 作成したC# コードをビルドし、問題なく実行できることを確認します。
dotnet restore
dotnet run


5. CLRDBG のインストール
.NET Core アプリをデバッグするために、Microsoft より公開されている CLRDBG を Linux にインストールします。
curl -sSL https://raw.githubusercontent.com/Microsoft/MIEngine/getclrdbg-release/scripts/GetClrDbg.sh | bash /dev/stdin latest /home/tr/clrdbg

6. Visual Studio で Linux アプリのデバッグ
6.1. Visual Studio のC# コンソールアプリケーションのプロジェクトを作成します。


6.2. ソリューションに以下のような XML ファイルを作成します。
<?xml version="1.0" encoding="UTF-8" ?>
<PipeLaunchOptions xmlns="http://schemas.microsoft.com/vstudio/MDDDebuggerOptions/2014" PipePath="C:\bin\plink.exe" PipeArguments="-i C:\bin\private.ppk tr@192.168.247.128 -batch -t /home/tr/clrdbg/clrdbg --interpreter=mi" TargetArchitecture="x64" MIMode="clrdbg" ExePath="dotnet" WorkingDirectory="/home/tr/dbgtest/bin/Debug/netcoreapp1.0/" ExeArguments="/home/tr/dbgtest/bin/Debug/netcoreapp1.0/dbgtest.dll">
</PipeLaunchOptions>


主な変数の意味は以下です。
変数意味

PipePath

plink.exe へのフルパス

PipeArguments

以下のように入力します。

-i <プライベートキーへのフルパス> <Linuxのユーザー名>@<Linux へのアドレス> –batch –t <CLRDBGへのフルパス> –interpreter=mi

ExeArguments

Linux での C# アプリの DLL へのパス

6.3. Program.cs に Linux で作成した C# アプリと同じコードを記入します。

6.4. ブレークポイントを張ってみます。


6.5. 「表示」->「その他のウィンドウ」->「コマンド ウィンドウ」をクリックします。


6.6. コマンド ウィンドウで以下を実行します。

Debug.MIDebugLaunch  /Executable:dotnet  /OptionsFile:"c:\users\tr\documents\visual studio 2015\Projects\dotnetdbgtest\dotnetdbgtest\OffRoadDebug.xml"


6.7. Visual Studio でブレークポイントにヒットします。
ローカル変数の確認や、ステップ実行等もできます。



情報元
Debugging .NET on Red Hat Enterprise Linux from Visual Studio (英語)

関連記事
Linux 上のC++ アプリをVisual Studio でリモートデバッグ
  1. 2016/09/18(日) 23:09:30|
  2. Visual Studio
  3. | トラックバック:0
  4. | コメント:0
<<Message Analyzer を用いてパフォーマンスデータ (.blg) の調査 | ホーム | Wireshark の tcptrace グラフを使用した、パフォーマンスのトラブルシューティング>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/306-921d9bc1
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。