Linux
C#
VisualStudio
RaspberryPi
mono

ラズパイにmonoをインストールしてVisual Studio 2017からC#アプリをリモートデバッグする

Raspberry Pi 3にmonoをインストールするとC#アプリケーションを実行できますが、開発中には実機で起動しているC#アプリをリモートデバッグしたいのが人情だと思います。実は、monoにはリモートデバッグのツールがあって簡単にリモートデバッグを実現することができます。

Monoのインストール

Monoは、apt-getで最新モジュールを取得できるようになりましたが、そのためにはapt-getのリポジトリにMonoのプロジェクトを登録しておく必要があります。なお、--recv-keysにセットするキーはこちらのサイトを参照して下さい。

#以下の依存関係をインストールする
sudo -E apt-get install dirmngr

#以下のコマンドでキーを更新します(プロキシ経由でなければhttp-proxyパラメータは不要です)
sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-option http-proxy=YOUR_PROXY_SERVER:PORT --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

#以下のコマンドで、apt-getリポジトリにMonoのリポジトリを追加します
echo "deb http://download.mono-project.com/repo/debian raspbianstretch main" | sudo tee /etc/apt/sources.list.d/mono-official.list

#リポジトリのリストを更新します
sudo -E apt-get update

#以下のコマンドでMonoをインストールします
sudo -E apt-get install mono-complete
sudo -E apt-get install mono-dbg

Monoリモートデバッガのインストール

リモートのVisual Studioから、デバッグを実行するためにラズパイ上にMonoのリモートデバッガをインストールします。

#https://github.com/techl/MonoRemoteDebugger から最新版をダウンロード
#ダウンロードファイルをscpで/home/YOUR_USER_NAMEにアップロード
#sshでunzip –d debug MonoRemoteDebugger.Server.zipを実行
#mono MonoRemoteDebugger.Server.exeを実行 → リモートデバッガがLinuxマシン上で起動する。

リモートデバッグを実行すると、/home/YOUR_USER_NAME/debug配下にGUIDをもつディレクトリが作成されます。Visual Studioのbin/Debugに配置されていた実行モジュールがこちらにコピーされ、そこをカレントディレクトリとしてデバッグが実行されます。このGUIDはデバッグ起動のたびに変わるため、適当なタイミングでdebugディレクトリ配下のファイルを削除してください。

少し挙動不審なところもありますが、まぁ普通にデバッグできます。ただし、マルチスレッド部分おデバッグは期待しないで下さい。途中でブレイクしてステップ実行などは期待通りに動きません。