Visual Studio Code でC#のコードをデバッグしてみる!
概要
環境
OS X EI Capitan バージョン 10.11.4
Visual Studio Code バージョン 1.0.0
dnvm(.NET Version Manager) - Version 1.0.0-rc2-15546
ランタイムはmonoで1.0.0-rc1-update2
$ dnvm list Active Version Runtime Architecture OperatingSystem Alias ------ ------- ------- ------------ --------------- ----- 1.0.0-beta4 mono linux/osx 1.0.0-beta6 mono linux/osx 1.0.0-rc1-update2 coreclr x64 darwin * 1.0.0-rc1-update2 mono linux/osx default
デバッグの設定
Mono Debugを拡張機能でインストール
コマンドパレット(⇧⌘P)よりext installと入力し、mono debugで絞り込みをかけて拡張機能をインストールします。
Mono Debug | Visual Studio Marketplace
デバッグボタン(⇧⌘D)から再生ボタンを選択します。
最初は構成ファイルがないのでnoneとなっているので、先ほどインストールしたMono Debugを選択します。
自動で.vscode/launch.jsonファイルが追加されます。
中身はこんな感じ。
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "mono", "request": "launch", "program": "${workspaceRoot}/program.exe", "args": [], "cwd": "${workspaceRoot}", "preLaunchTask": "", "runtimeExecutable": null, "env": {}, "externalConsole": false }, { "name": "Attach", "type": "mono", "request": "attach", "address": "localhost", "port": 55555 } ] }
構成ファイルがLaunch状態で再度、再生ボタンを押下するとprogram.exeがないためエラーになります。ビルドしてexeを作る必要があります。
ビルドして実行可能ファイルを作成
タスクランナー
このビルド処理をタスクランナーとして登録しておきます。
コマンドパレットよりBuildと入力するか⇧⌘Bでビルドタスクを呼び出します。
最初は構成ファイルがないので、タスクランナーの設定を行います。
適当なTask Runnerを選ぶとtasks.jsonファイルが追加されるので書き換えます。
tasks.json
{ "version": "0.1.0", "command": "mcs", "args": [ "-debug", "Program.cs" ], "showOutput": "silent", "taskSelector": "/t:", "tasks": [ { "taskName": "exe", "isBuildCommand": true, "problemMatcher": "$msCompile" } ] }
再度ビルド(⇧⌘B)するとexeファイルが作成されます。
クラスファイルを増やしたらargsプロパティに追加していきます。
タスクランナーの書き方についてはこちら。
www.atmarkit.co.jp
デバッグ
ブレークポイントを設定し、デバッグボタン(⇧⌘D)から再生ボタンを押下します。
止まったぁぁぁ!
ちと難しいというか面倒ですねぇ。
クラスが増えてくるとargsプロパティに対象ファイルを含めるのが大変だし、Debugくらいもう少しお手軽にできないものか。いや違うか、IDEに慣れすぎたんだな。
エディタとコンソールでコーディングすることの楽しさとIDEの恩恵を再認識させられました。
sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com
参考
中の人が書いてるやつ。
.csprojファイルを用意してタスクランナーでxbuild(MSBuildのMono版実装らしい)で実行可能ファイル(exe)を作成する方法。
michaelcrump.net
コメント欄に.csprojいらないよって書いてあってリンクが張られてたのがこちら。
blog.nwoolls.com