概要
wscript.exe
/ cscript.exe
に //X
オプションを与えてスクリプトを実行すると、Active Scripting APIに対応したデバッガーでスクリプトのデバッグを行うことができます。この記事の公開時点で最新であるVisual Studio 2022でデバッグ可能です。
しかし、Windowsを初期化した直後にwingetでVisual Studioをインストールした環境で、デバッガー選択ダイアログが出ないことがありました。これを踏まえて、デバッグができる条件について調べました。
環境
C:\>ver
Microsoft Windows [Version 10.0.22000.675]
- Visual Studio Community 2022
解説
wingetからインストールしたVisual Studio Communityは、空の状態でインストールされます。(「空のソリューション」しか作成できません。)
Visual Studio Installerからコンポーネントを追加します。試しに、最もスタンダードな「.NET デスクトップ開発」をインストールしたところ、JIT Debugが有効化されました。
なおJITデバッガーは単体でインストールするオプションもあるのですが、JITデバッガーのみを選択した場合には //X
オプションでダイアログが表示されませんでした。どのコンポーネントが関わって有効になるのかは、わかっていません。
補足
//D
オプションについて
「アクティブ デバッグを使用可能にする」オプションです。
よくわかっていません ...
VS Codeでのデバッグについて
現状、WSHに対応したデバッガー拡張機能は公開されていません。Active Scripting APIに対応し、かつVS CodeとDebug Adapter Protocolで通信するデバッガーを開発すれば、技術的には可能だと思います。私はやりませんけど
代替案として、tasks.json
にて //X
オプションを与えて起動するタスクを構成するのはいかがでしょうか。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"presentation": {
"focus": true
},
"tasks": [
{
"label": "run",
"type": "shell",
"command": "cscript",
"args": [
"${workspaceFolder}/index.wsf"
],
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "debug",
"type": "shell",
"command": "cscript",
"args": [
"//X",
"${workspaceFolder}/index.wsf"
],
"problemMatcher": [],
"group": {
"kind": "build"
}
}
]
}
タスクを実行するとデバッガー選択ダイアログが出て、Visual Studioに遷移します。ブレークポイントは都度消えてしまいますが、ないよりは良いでしょう。
デバッグの終了
Visual Studioを閉じると保存を促すダイアログが出ますが、デバッグ対象のコードとは無関係なので破棄して構いません。
参考
- レジストリを変更することで有効になるという回答ですが、今回は効果がありませんでした。
- Visual Studioをデバッガーとして利用するのではなく、そもそもVisual Studioで編集すれば綺麗に統合できそう
- Active Scripting API
- VS Code Debug Adapter Protocol