LoginSignup
0
0

More than 1 year has passed since last update.

WSH JScriptをVisual Studio 2022でデバッグする

Posted at

概要

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0