web-dev-qa-db-ja.com

Visual Studioからのモノラルリモートデバッグ

Linuxで実行されているC#コンソールアプリケーションをVisual Studioからリモートデバッグしたいと思います。ここに私がこれまでに見つけたものがあります:

http://www.mono-project.com/Debugger

Monoランタイムは、デバッガーやIDEがマネージコードをデバッグできるようにするデバッグインターフェイスを実装しています。これはソフトデバッガーと呼ばれ、MonoDevelop、Xamarin Studio、Visual Studio(適切なプラグインがインストールされている場合)、およびコマンドラインSDBクライアントの両方でサポートされています。

Monoは、デバッガーと通信し、Mono.Debugger.Soft.dllアセンブリを介して独自のデバッグUIを作成するためのAPIを提供します。

以下のページでは、現在のMonoVSデバッガー実装のいくつかの問題について説明していますが、すべて問題ありません。

http://mono-project.com/Visual_Studio_Integration

このページは、MonoVSのスタートガイドにもリンクしています。

http://mono-project.com/GettingStartedWithMonoVS

MonoToolsのダウンロードリンクが含まれています。

http://mono-tools.com/download/

ただし、ダウンロードリンクは次の場所にリダイレクトされます。

http://xamarin.com/download/

Xamarin Studio Starter Editionのダウンロードが提供されている場所。 [価格]リンクをクリックすると、少なくともVisual Studio SupportのBusinessエディション(年間999ドル)が必要であることがわかります。まあ、ありがとう。

これは私が行き詰まっているところです。私の環境のいくつかの詳細:

開発環境:

  • Windows 7 64ビット
  • Visual Studio Pro 2013(より適切に機能する場合は2010を使用する場合があります)

対象環境:

  • ラズベリーパイ
  • ラズビアン・フィージー
  • モノ3.2.8
  • SSH経由でコンソールアプリケーションを実行する
31
Anlo

私はそれが古いスレッドであることを知っていますが、誰か(私のような)がまだその解決策を見つけていない場合に備えて、今日の検索中に、魅力的なように機能するこのVisual Studio 2015拡張機能を見つけました: MonoRemoteDebugger for Visual Studio 2015

VS2015 update2で​​のXamarin VS拡張との競合を修正するには、 MonoRemoteDebugger v1.0.4 を参照してください。

お役に立てば幸いです。

幸せなデバッグをして、開発者に感謝します! :)

17

このガイド iOSとAndroid開発を除いて現在無料のXamarin Studioを使用して、WindowsからLinuxでリモートデバッグを実行する方法を説明しています。 Raspbian Jessie Lite(2017-04-10)を実行しているRaspberry Pi Zero Wでテスト中に発生した問題の修正を加えて拡張しました。

  1. Xamarin StudioGTK#for .NET および 。NET Framework 4.6.2 をダウンロードしてインストールします。 Xamarin Studioには.NET 4.5が必要ですが、GTK#には.NET 4.6が必要です。 Xamarin Studioバージョン6.1.2(ビルド44)とGTK#バージョン2.12.44を使用しました。
  2. VS2015マシンとは異なる仮想マシンにXamarin Studioをインストールしたため、 MSBuild Tools 201 および MSBuild Tools 2015 もダウンロードしてインストールする必要がありました。
  3. 環境変数MONODEVELOP_SDB_TEST = 1を作成します(マイコンピュータ->プロパティ->システムの詳細設定->環境変数)。
  4. Xamarin Studioを起動します。ウィンドウが表示されない場合は、%localappdata%\XamarinStudio-6.0\Logsフォルダー内のログファイルをチェックして、何が失敗したかを確認してください。
  5. Visual Studio 2015で.NET 4.6コンソールアプリケーションを作成し、NuGetパッケージMono.Unofficial.pdb2mdbを追加しました。バージョン4.2.3.4を使用しました。パッケージMono.pdb2mdbバージョン0.1.0.20130128は、VS2015(PdbDebugException: Unknown custom metadata item kind: 6)によってビルドされたアセンブリでは機能しないようです。
  6. Visual StudioからXamarin Studioに.slnまたは.csprojファイルをロードします。ソリューションをビルドし、NuGetパッケージフォルダーからpdb2mdbツールを使用して.mdbファイルを作成します:pdb2mdb MyProgram.exe
  7. 私は WinSCP を使用して、MyProgram.exeおよびMyProgram.exe.mdbをRaspberry Piにコピーしました。
  8. SSHを使用して PuTTY でログインし、Monoバージョン3.2.8をPiにインストールしました:Sudo apt-get install mono-complete
  9. デバッガーフラグを使用してMonoランタイムを開始します:mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/MyProgram.exe。これによりプログラムが起動しますが、Xamarin Studioデバッガーが接続するまで実行が停止します。
  10. Xamarin Studioでブレークポイントを設定し、メニュー項目Run -> Run with -> Custom Configuration...を選択して、Run Action = Debug - Custom Command Mono Soft Debuggerを選択します。 Debugをクリックします。
  11. IPおよびPortフィールドに、Monoコマンドラインで指定したLinuxシステムのIPアドレスとポート12345を入力します。 Connectをクリックすると、実行が開始され、設定されたブレークポイントで停止します。

Screenshot of Xamarin Studio Debugging

条件付きブレークポイントの設定、コードのステップイン/ステップアウト/オーバー、プリミティブとオブジェクトの監視などが可能で、非常に高速です。 Visual Studioから直接デバッグしたいのですが、これは完全に機能するソリューションのようです。

3
Anlo

Raspbian Jessie Lite(2017-04-10)を実行しているRaspberry Pi Zero WでVS2015を使用して Gutemberg Ribeiroの回答 に基づいて構築し、 MonoRemoteDebugger を取得できました。コツは、3.2.8以降のMonoバージョンをインストールすることでした。

  1. MonoRemoteDebugger Visual Studio拡張機能をインストールします。バージョン1.2.0を使用しました。
  2. Visual Studioで.NET 4.6コンソールアプリケーションを作成します。
  3. 古いMonoバージョンがRaspberry Piにインストールされている場合は、次のコマンドを使用して削除します。

    Sudo apt-get purge mono-complete

    Sudo apt-get autoremove

  4. Monoバージョン4.0.2をインストールします。

    Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

    echo "deb http://plugwash.raspbian.org/mono4 jessie-mono4 main" | Sudo tee -a /etc/apt/sources.list

    Sudo apt-get update

    Sudo apt-get install mono-complete

  5. MonoRemoteDebuggerサーバーをインストールします:

    wget https://github.com/techl/MonoRemoteDebugger/releases/download/v1.2.0/MonoRemoteDebugger.Server.Zip

    unzip -d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.Zip

  6. MonoRemoteDebuggerサーバーを起動します:

    mono MonoRemoteDebugger.Server/MonoRemoteDebugger.Server.exe

  7. Visual Studioでブレークポイントを設定し、Visual Studioでメニュー項目MonoRemoteDebugger -> Debug with Mono (remote)を選択します。
  8. Remote-IPをRaspberry PiのIPアドレスに設定し、[接続]をクリックします。 MonoRemoteDebuggerはプログラムをコンパイルしてRaspberry Piに転送します。 pdb2mdbを手​​動で実行する必要はありません。mdbファイルはMonoRemoreDebuggerサーバーによって作成されます。

Screenshot

正直なところ、デバッグ機能はかなり制限されています。単純なブレークポイントとコードのステップイン/アウト/オーバーは、いくらかうまくいくようです。関数にブレークポイントを設定し、その関数呼び出しをステップオーバーしても、ブレークポイントで停止しません。

プリミティブタイプは監視できますが、監視しようとしたオブジェクトは表示できません。呼び出しスタックビューはかなり制限されており、スレッドビューは空です。例外はキャッチされませんが、MonoRemoteDebuggerServerから「[ERROR] FATAL UNHANDLED EXCEPTION」メッセージが表示されます。ただし、これらの制限に対処できる場合、セットアップは Xamarin Studio route よりも簡単です。

0
Anlo

Xamarin Studio/MonoDevelopのプラグインがあります

https://github.com/logicethos/SSHDebugger

0
FlappySocks

必要なソリューションは今年 MonoDebugger.NET で提供されます。開発者は、任意のMonoデバイスに展開してVisual Studio内でデバッグできることを「約束」します(2010〜2015)。

0
dayanruben