feat(debugger): integrate NX Tcl Remote Debugger into NX Postprocessor
build_and_puplish.yml / build_and_publish (release) Successful in 35s

Embed the NX Tcl Remote Debugger into the NX Postprocessor extension.
Add a new debugging client, protocol, and adapter logic to
drive attach/launch, breakpoints, stepping, and evaluation
via the runtime adapter.

- Introduced a client debugger with a new adapter and protocol
- Wired attach/launch, breakpoints, stepping, and evaluation
- Updated docs and licensing to reflect the embedded debugger
This commit is contained in:
Christoph Brandau
2026-08-28 22:36:18 +02:00
parent 07ccd2d26a
commit c3d5116885
12 changed files with 1135 additions and 10 deletions
+106 -5
View File
@@ -1,10 +1,16 @@
{
"name": "nx-post-support",
"displayName": "NX Postprocessor Support",
"description": "VS Code extension for NX CAM postprocessor development with syntax highlighting, formatting, linting, and auto-completion for CDL, TCL, and DEF files",
"version": "2026.8.200",
"description": "VS Code extension for NX CAM postprocessor development with language support and remote Tcl debugging for CDL, TCL, and DEF files",
"version": "2026.8.201",
"publisher": "Christoph",
"icon": "images/nx-1.png",
"activationEvents": [
"onLanguage:tcl",
"onLanguage:cdl",
"onLanguage:def",
"onDebug"
],
"extensionDependencies": [
"ms-python.python"
],
@@ -23,15 +29,109 @@
"UDE",
"Postprocessor",
"NX CAM",
"Siemens NX"
"Siemens NX",
"debugger",
"remote debugging"
],
"engines": {
"vscode": "^1.96.0"
},
"categories": [
"Programming Languages"
"Programming Languages",
"Debuggers"
],
"contributes": {
"breakpoints": [
{
"language": "tcl"
},
{
"language": "def"
}
],
"debuggers": [
{
"type": "nx-tcl",
"label": "NX Tcl Remote Debugger",
"languages": [
"tcl",
"def"
],
"configurationAttributes": {
"attach": {
"required": [
"host",
"port"
],
"properties": {
"host": {
"type": "string",
"default": "127.0.0.1",
"description": "Host on which the NX Tcl runtime is listening."
},
"port": {
"type": "number",
"default": 4711,
"description": "TCP port of the NX Tcl runtime."
},
"connectTimeout": {
"type": "number",
"default": 120000,
"description": "How long VS Code retries until NX starts the runtime, in milliseconds."
},
"stopOnEntry": {
"type": "boolean",
"default": false,
"description": "Stop on the first traced Tcl command."
},
"breakOnError": {
"type": "boolean",
"default": true,
"description": "Stop when a traced Tcl command returns TCL_ERROR."
},
"localRoot": {
"type": "string",
"description": "Local source root opened in VS Code."
},
"remoteRoot": {
"type": "string",
"description": "Corresponding source root on the NX host when it differs from localRoot."
}
}
}
},
"initialConfigurations": [
{
"type": "nx-tcl",
"request": "attach",
"name": "Attach to NX Post Tcl",
"host": "127.0.0.1",
"port": 4711,
"connectTimeout": 120000,
"stopOnEntry": false,
"breakOnError": true,
"localRoot": "${workspaceFolder}"
}
],
"configurationSnippets": [
{
"label": "NX Tcl: Attach to NX Post",
"description": "Attach VS Code to an NX runtime embedded in NX Post.",
"body": {
"type": "nx-tcl",
"request": "attach",
"name": "Attach to NX Post Tcl",
"host": "127.0.0.1",
"port": 4711,
"connectTimeout": 120000,
"stopOnEntry": false,
"breakOnError": true,
"localRoot": "${workspaceFolder}"
}
}
]
}
],
"languages": [
{
"id": "tcl",
@@ -151,7 +251,8 @@
"compile": "node esbuild.js --production",
"compile:debug": "node esbuild.js",
"watch": "node esbuild.js --watch",
"package": "node esbuild.js --production"
"package": "node esbuild.js --production",
"test:debugger": "node --test test/debugger.test.js"
},
"devDependencies": {
"@types/vscode": "^1.96.0",