MonoDevelopで.NET Coreのデバッグ実行をできるようにする
問題点
WindowsのVisual StudioとmacOSのVisual Studio for Macは標準で.NET Coreのデバッグができるが、LinuxのMonoDevelopはマイクロソフト製のデバッガーは用意されておらず標準ではデバッグ実行ができない。デバッグ実行をしても通常実行となりブレークポイントなどは無視される。
解決策
サムスンがVisual Studio Code用として開発した「Debugger for .NET Core (netcoredbg)」と MonoDevelop拡張機能を入れることでLinux上のMonoDevelopでもデバッグできるようになる。
目次
備考
以下はUbuntu 20.04 LTSで構築した事例である。 CentOSなどでも同じだと思うが試してはいない。
netcoredbgを入れる
MonoDevelopの中の人がバイナリを提供してくれているので、 netcoredbgのzipファイルをダウンロードしてホームディレクトリ直下あたりに展開しておく。
netcoredbgを展開したらターミナルから叩いてみて正常に動くかを確認する。
~/netcoredbg.linux/netcoredbg --help
.NET Core Debugger support 拡張機能を入れる
MonoDevelopにnetcoredbgを叩く拡張機能を入れる。
Samsung .NET Core Debugger support拡張(mpackファイル)をダウンロードする。 ダウンロードページには複数バージョンがあるのでMonoDevelopのバージョンに合わせること。 MonoDevelop 7.xに8.x系の拡張をいれても動かない。
MonoDevelopの拡張機能マネージャー(メインメニューの「ツール」「拡張機能」)を開き、 ダイアログの下部にある「ファイルからインストール」を選び、 先程ダウンロードしたmpackファイルをインストールする。
インストールが完了すると、「インストール済み」「Debugging」に「.NET Core support for Mono.Debugging」が追加される。
- アイコンが緑色なら正常にインストールされている。
- アイコンが灰色なら異常。たぶんmpackファイルとmonodevelopのバージョンが食い違っている。
.NET Core Debugger support の設定をする
MonoDevelopのユーザー設定(メインメニューの「編集」「ユーザー設定」)を開くと 「プロジェクト」に「.NET Core Debuggers」が追加されているはずなので、 その中の「場所」の欄にnetcoredbgのフルパスを指定する。
「見つかりました」となればすべて完了だ。
試してみる
.NET Core コンソールアプリケーションでも作ってMain直下あったりにブレークポイントを仕掛けてデバッグ実行してみろ。