Configuration for Debugging the Pony Compiler in Visual Studio Code on Windows

For debugging the Pony compiler on Windows I use the following configuration files in the .vscode directory of my cloned ponyc git repo.

I also use the Pony Syntax Colorizer for syntax highlighting in Pony programs.

Updated: updated tasks.json for more recent VSCode versions.

c_cpp_properties.json:

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceRoot}/build/debug-llvm-3.9.1/ThirdParty/lib/LLVM-3.9.1-Debug/include",
        "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/include",
        "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared",
        "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt",
        "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um",
        "${workspaceRoot}/src/common",
        "${workspaceRoot}/src/libponyrt"
      ],
      "defines": [
        "PONY_VERSION=\"0.20.0\"",
        "LLVM_VERSION=\"3.9.1\"",
        "PONY_COMPILER=\"msvc\"",
        "PONY_BUILD_CONFIG=\"debug\"",
        "PONY_LLVM=391",
        "DEBUG",
        "_DEBUG",
        "_MSC_VER=1900",
        "UNICODE"
      ],
      "browse": {
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": "C:/Users/Gordon/Dev/pony/ponyc/.vscode/browse/.browse.VC.db",
        "path": [
          "${workspaceRoot}/build/debug-llvm-3.9.1/ThirdParty/lib/LLVM-3.9.1-Debug/include",
          "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/include",
          "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared",
          "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt",
          "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um",
          "${workspaceRoot}/src"
        ]
      },
      "intelliSenseMode": "msvc-x64"
    }
  ],
  "version": 3
}

Obviously the version numbers and directory names for LLVM, Visual Studio and Windows SDK will need to be updated for your particular installation.

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Ponyc",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "${workspaceRoot}/build/debug-llvm-3.9.1/ponyc.exe",
      "args": [ ],
      "stopAtEntry": false,
      "cwd": "${workspaceRoot}",
      "environment": [
        {
          "name": "PONYPATH",
          "value": ""
        }
      ],
      "externalConsole": false
    },
    {
      "name": "Attach to Process",
      "type": "cppvsdbg",
      "request": "attach",
      "processId": "${command:pickProcess}"
    }
  ]
}

This provides two launch tasks, one for the Pony compiler, and one for attaching to a running program.

tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "distclean",
      "command": "${workspaceRoot}/make.bat",
      "args": [
        "distclean"
      ],
      "type": "shell",
      "group": "none",
      "problemMatcher": []
    },
    {
      "label": "configure",
      "command": "${workspaceRoot}/make.bat",
      "args": [
        "configure"
      ],
      "type": "shell",
      "group": "none",
      "problemMatcher": []
    },
    {
      "label": "clean",
      "command": "${workspaceRoot}/make.bat",
      "args": [
        "clean",
        "--config=debug"
      ],
      "type": "shell",
      "group": "none",
      "problemMatcher": []
    },
    {
      "label": "build",
      "command": "${workspaceRoot}/make.bat",
      "args": [
        "build",
        "--config=debug"
      ],
      "type": "shell",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "problemMatcher": "$msCompile"
    },
    {
      "label": "test",
      "command": "${workspaceRoot}/make.bat",
      "args": [
        "build",
        "test",
        "--config=debug"
      ],
      "type": "shell",
      "group": {
        "kind": "test",
        "isDefault": true
      },
      "problemMatcher": "$msCompile"
    }
  ]
}

This will provide tasks for building and testing ponyc in debug mode.

settings.json

{
  "files.associations": {
    "*.h": "cpp",
    "*.c": "cpp"
  }
}

Windows builds must use C++ for all source files.