1142 lines
32 KiB
JSON
1142 lines
32 KiB
JSON
{
|
|
"name": "debug",
|
|
"displayName": "Native Debug(fix some bugs)",
|
|
"description": "GDB, LLDB & Mago-MI Debugger support for VSCode",
|
|
"keywords": [
|
|
"KylinIdeDev",
|
|
"KylinIdeDevDebug",
|
|
"KylinIdeDevCYuYan",
|
|
"KylinIdeDevCPlusPlus",
|
|
"gdb",
|
|
"lldb",
|
|
"mago-mi",
|
|
"native",
|
|
"debug"
|
|
],
|
|
"license": "mit",
|
|
"version": "0.2.3",
|
|
"publisher": "KylinIDETeam",
|
|
"icon": "images/native-debug.png",
|
|
"engines": {
|
|
"vscode": "^1.54.0"
|
|
},
|
|
"main": "./out/src/frontend/extension",
|
|
"activationEvents": [
|
|
"onDebug",
|
|
"onCommand:code-debug.examineMemoryLocation",
|
|
"onCommand:code-debug.getFileNameNoExt",
|
|
"onCommand:code-debug.getFileBasenameNoExt",
|
|
"onCommand:code-debug.startRecord",
|
|
"onCommand:code-debug.stopRecord"
|
|
],
|
|
"downloadUrl": "https://gitee.com/openkylin/extensions-repo/tree/master/KylinIDETeam/debug",
|
|
"categories": [
|
|
"Debuggers"
|
|
],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://gitee.com/openkylin/native-debug.git"
|
|
},
|
|
"capabilities": {
|
|
"untrustedWorkspaces": {
|
|
"supported": true
|
|
}
|
|
},
|
|
"contributes": {
|
|
"commands": [
|
|
{
|
|
"command": "code-debug.examineMemoryLocation",
|
|
"title": "Code-Debug: Examine memory location"
|
|
},
|
|
{
|
|
"command": "code-debug.startRecord",
|
|
"title": "Code-Debug: Start reverse debugging",
|
|
"icon": "$(debug-start)"
|
|
},
|
|
{
|
|
"command": "code-debug.stopRecord",
|
|
"title": "Code-Debug: Stop reverse debugging",
|
|
"icon": "$(debug-stop)"
|
|
}
|
|
],
|
|
"menus": {
|
|
"editor/title": [
|
|
{
|
|
"command": "code-debug.startRecord",
|
|
"when": "code-debug.enableRecord && inDebugMode && debugState == stopped && debugType == 'gdb' && code-debug.enableStartRecord",
|
|
"group": "navigation"
|
|
},
|
|
{
|
|
"command": "code-debug.stopRecord",
|
|
"when": "code-debug.enableRecord && inDebugMode && debugState == stopped && debugType == 'gdb' && !code-debug.enableStartRecord",
|
|
"group": "navigation"
|
|
}
|
|
]
|
|
},
|
|
"breakpoints": [
|
|
{
|
|
"language": "c"
|
|
},
|
|
{
|
|
"language": "cpp"
|
|
},
|
|
{
|
|
"language": "d"
|
|
},
|
|
{
|
|
"language": "objective-c"
|
|
},
|
|
{
|
|
"language": "fortran"
|
|
},
|
|
{
|
|
"language": "fortran-modern"
|
|
},
|
|
{
|
|
"language": "fortran90"
|
|
},
|
|
{
|
|
"language": "fortran_free-form"
|
|
},
|
|
{
|
|
"language": "fortran_fixed-form"
|
|
},
|
|
{
|
|
"language": "rust"
|
|
},
|
|
{
|
|
"language": "pascal"
|
|
},
|
|
{
|
|
"language": "objectpascal"
|
|
},
|
|
{
|
|
"language": "ada"
|
|
},
|
|
{
|
|
"language": "nim"
|
|
},
|
|
{
|
|
"language": "arm"
|
|
},
|
|
{
|
|
"language": "asm"
|
|
},
|
|
{
|
|
"language": "vala"
|
|
},
|
|
{
|
|
"language": "crystal"
|
|
},
|
|
{
|
|
"language": "kotlin"
|
|
},
|
|
{
|
|
"language": "zig"
|
|
}
|
|
],
|
|
"debuggers": [
|
|
{
|
|
"type": "gdb",
|
|
"program": "./out/src/gdb.js",
|
|
"runtime": "node",
|
|
"label": "GDB",
|
|
"languages": [
|
|
"c",
|
|
"cpp",
|
|
"d",
|
|
"objective-c",
|
|
"fortran",
|
|
"fortran-modern",
|
|
"fortran90",
|
|
"fortran_free-form",
|
|
"fortran_fixed-form",
|
|
"rust",
|
|
"pascal",
|
|
"objectpascal",
|
|
"ada",
|
|
"nim",
|
|
"arm",
|
|
"asm",
|
|
"vala",
|
|
"crystal",
|
|
"kotlin",
|
|
"zig"
|
|
],
|
|
"variables": {
|
|
"FileBasenameNoExt": "code-debug.getFileBasenameNoExt",
|
|
"FileNameNoExt": "code-debug.getFileNameNoExt"
|
|
},
|
|
"configurationAttributes": {
|
|
"launch": {
|
|
"required": [
|
|
"target",
|
|
"cwd"
|
|
],
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "Path of executable"
|
|
},
|
|
"arguments": {
|
|
"type": "string",
|
|
"description": "Arguments to append after the executable. You can also use pipes."
|
|
},
|
|
"terminal": {
|
|
"type": "string",
|
|
"description": "Leave this field undefined to keep program output in the vscode console at the bottom. If this is set to empty string the program will spawn in a new console using x-terminal-emulator on linux, otherwise with the specified terminal. On windows setting this to an empty string spawns the program in a console, but no other console is supported."
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "project path"
|
|
},
|
|
"gdbpath": {
|
|
"type": "string",
|
|
"description": "Path to the gdb executable or the command if in PATH",
|
|
"default": "gdb"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"description": "Environment overriding the gdb (and in turn also the process) environment",
|
|
"default": null
|
|
},
|
|
"debugger_args": {
|
|
"type": "array",
|
|
"description": "Additional arguments to pass to GDB",
|
|
"default": []
|
|
},
|
|
"pathSubstitutions": {
|
|
"type": "object",
|
|
"description": "Help GDB find your source using path substitutions (GDB `substitute-path)` variable",
|
|
"default": {
|
|
"<fromPath>": "<toPath>"
|
|
}
|
|
},
|
|
"valuesFormatting": {
|
|
"type": "string",
|
|
"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
|
|
"default": "parseText",
|
|
"enum": [
|
|
"disabled",
|
|
"parseText",
|
|
"prettyPrinters"
|
|
]
|
|
},
|
|
"printCalls": {
|
|
"type": "boolean",
|
|
"description": "Prints all GDB calls to the console",
|
|
"default": false
|
|
},
|
|
"showDevDebugOutput": {
|
|
"type": "boolean",
|
|
"description": "Prints all GDB responses to the console",
|
|
"default": false
|
|
},
|
|
"autorun": {
|
|
"type": "array",
|
|
"description": "GDB commands to run when starting to debug",
|
|
"default": []
|
|
},
|
|
"stopAtEntry": {
|
|
"type": [
|
|
"boolean",
|
|
"string"
|
|
],
|
|
"description": "Whether debugger should stop at application entry point",
|
|
"default": false
|
|
},
|
|
"ssh": {
|
|
"required": [
|
|
"host",
|
|
"user",
|
|
"cwd"
|
|
],
|
|
"type": "object",
|
|
"description": "If this is set then the extension will connect to an ssh host and run GDB there",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string",
|
|
"description": "Remote host name/ip to connect to"
|
|
},
|
|
"port": {
|
|
"type": [
|
|
"number",
|
|
"string"
|
|
],
|
|
"description": "Remote port number",
|
|
"default": 22
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"description": "Username to connect as"
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"description": "Plain text password (unsafe; if possible use keyfile instead)"
|
|
},
|
|
"keyfile": {
|
|
"type": "string",
|
|
"description": "Absolute path to private key"
|
|
},
|
|
"useAgent": {
|
|
"type": "boolean",
|
|
"description": "Auto-detect the running SSH agent (via SSH_AUTH_SOCK environment variable) and use it to perform authentication",
|
|
"default": false
|
|
},
|
|
"sourceFileMap": {
|
|
"type": "object",
|
|
"description": "Mapping of source paths (from GDB on ssh remote) to local (IDE) paths.",
|
|
"default": {
|
|
"<sourcePath>": "<localPath>"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "Working directory for the debugger.\nIf `ssh.sourceFileMap` is not set, then this is also the project path on the remote for mapping with `cwd`."
|
|
},
|
|
"forwardX11": {
|
|
"type": "boolean",
|
|
"description": "If true, the server will redirect x11 to the local host",
|
|
"default": true
|
|
},
|
|
"x11port": {
|
|
"type": [
|
|
"number",
|
|
"string"
|
|
],
|
|
"description": "Port to redirect X11 data to (by default port = display + 6000)",
|
|
"default": 6000
|
|
},
|
|
"x11host": {
|
|
"type": "string",
|
|
"description": "Hostname/ip to redirect X11 data to",
|
|
"default": "localhost"
|
|
},
|
|
"remotex11screen": {
|
|
"type": "number",
|
|
"description": "Screen to start the application on the remote side",
|
|
"default": 0
|
|
},
|
|
"bootstrap": {
|
|
"type": "string",
|
|
"description": "Content will be executed on the SSH host before the debugger call."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"attach": {
|
|
"required": [
|
|
"target",
|
|
"cwd"
|
|
],
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "PID of running program or program name or connection arguments (eg :2345) if remote is true"
|
|
},
|
|
"remote": {
|
|
"type": "boolean",
|
|
"description": "If true this will connect to a gdbserver instead of attaching to a PID",
|
|
"default": false
|
|
},
|
|
"valuesFormatting": {
|
|
"type": "string",
|
|
"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
|
|
"default": "parseText",
|
|
"enum": [
|
|
"disabled",
|
|
"parseText",
|
|
"prettyPrinters"
|
|
]
|
|
},
|
|
"printCalls": {
|
|
"type": "boolean",
|
|
"description": "Prints all GDB calls to the console",
|
|
"default": false
|
|
},
|
|
"showDevDebugOutput": {
|
|
"type": "boolean",
|
|
"description": "Prints all GDB responses to the console",
|
|
"default": false
|
|
},
|
|
"executable": {
|
|
"type": "string",
|
|
"description": "Path of executable for debugging symbols"
|
|
},
|
|
"gdbpath": {
|
|
"type": "string",
|
|
"description": "Path to the gdb executable or the command if in PATH",
|
|
"default": "gdb"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"description": "Environment overriding the gdb (and in turn also the process) environment",
|
|
"default": null
|
|
},
|
|
"debugger_args": {
|
|
"type": "array",
|
|
"description": "Additional arguments to pass to GDB",
|
|
"default": []
|
|
},
|
|
"pathSubstitutions": {
|
|
"type": "object",
|
|
"description": "Help GDB find your source using path substitutions (GDB `substitute-path)` variable",
|
|
"default": {
|
|
"<fromPath>": "<toPath>"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "project path",
|
|
"default": "${workspaceRoot}"
|
|
},
|
|
"autorun": {
|
|
"type": "array",
|
|
"description": "GDB commands to run when starting to debug",
|
|
"default": []
|
|
},
|
|
"stopAtConnect": {
|
|
"type": "boolean",
|
|
"description": "Whether debugger should stop after connecting to target",
|
|
"default": false
|
|
},
|
|
"stopAtEntry": {
|
|
"type": [
|
|
"boolean",
|
|
"string"
|
|
],
|
|
"description": "Whether debugger should stop at application entry point",
|
|
"default": false
|
|
},
|
|
"ssh": {
|
|
"required": [
|
|
"host",
|
|
"cwd",
|
|
"user"
|
|
],
|
|
"type": "object",
|
|
"description": "If this is set then the extension will connect to an ssh host and run GDB there",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string",
|
|
"description": "Remote host name/ip to connect to"
|
|
},
|
|
"port": {
|
|
"type": [
|
|
"number",
|
|
"string"
|
|
],
|
|
"description": "Remote port number",
|
|
"default": 22
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"description": "Username to connect as"
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"description": "Plain text password (unsafe; if possible use keyfile instead)"
|
|
},
|
|
"keyfile": {
|
|
"type": "string",
|
|
"description": "Absolute path to private key"
|
|
},
|
|
"useAgent": {
|
|
"type": "boolean",
|
|
"description": "Auto-detect the running SSH agent (via SSH_AUTH_SOCK environment variable) and use it to perform authentication",
|
|
"default": false
|
|
},
|
|
"sourceFileMap": {
|
|
"type": "object",
|
|
"description": "Mapping of source paths (from GDB on ssh remote) to local (IDE) paths.",
|
|
"default": {
|
|
"<sourcePath>": "<localPath>"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "Working directory for the debugger.\nIf `ssh.sourceFileMap` is not set, then this is also the project path on the remote for mapping with `cwd`."
|
|
},
|
|
"forwardX11": {
|
|
"type": "boolean",
|
|
"description": "If true, the server will redirect x11 to the local host",
|
|
"default": true
|
|
},
|
|
"x11port": {
|
|
"type": [
|
|
"number",
|
|
"string"
|
|
],
|
|
"description": "Port to redirect X11 data to (by default port = display + 6000)",
|
|
"default": 6000
|
|
},
|
|
"x11host": {
|
|
"type": "string",
|
|
"description": "Hostname/ip to redirect X11 data to",
|
|
"default": "localhost"
|
|
},
|
|
"remotex11screen": {
|
|
"type": "number",
|
|
"description": "Screen to start the application on the remote side",
|
|
"default": 0
|
|
},
|
|
"bootstrap": {
|
|
"type": "string",
|
|
"description": "Content will be executed on the SSH host before the debugger call."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"initialConfigurations": [
|
|
{
|
|
"name": "Debug",
|
|
"type": "gdb",
|
|
"request": "launch",
|
|
"target": "./bin/executable",
|
|
"cwd": "${workspaceRoot}",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
],
|
|
"configurationSnippets": [
|
|
{
|
|
"label": "GDB: Launch Program",
|
|
"description": "Starts the program using gdb",
|
|
"body": {
|
|
"type": "gdb",
|
|
"request": "launch",
|
|
"name": "${2:Launch Program}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "GDB: Attach to PID",
|
|
"description": "Attaches to a running program pid using gdb",
|
|
"body": {
|
|
"type": "gdb",
|
|
"request": "attach",
|
|
"name": "${2:Attach to PID}",
|
|
"target": "${1:[PID]}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "GDB: Connect to gdbserver",
|
|
"description": "Connects to a gdbserver for debugging",
|
|
"body": {
|
|
"type": "gdb",
|
|
"request": "attach",
|
|
"name": "${3:Attach to gdbserver}",
|
|
"executable": "${1:./bin/executable}",
|
|
"target": ":${2:2345}",
|
|
"remote": true,
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "GDB: Launch over SSH",
|
|
"description": "Remotely starts the program using gdb",
|
|
"body": {
|
|
"type": "gdb",
|
|
"request": "launch",
|
|
"name": "${6:Launch Program (SSH)}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"ssh": {
|
|
"host": "${2:127.0.0.1}",
|
|
"cwd": "${3:/tmp/working}",
|
|
"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
|
|
"user": "${5:remote_user}",
|
|
"sourceFileMap": {
|
|
"${6:/home/remote_user/project/}": "^\"\\${workspaceRoot}\""
|
|
}
|
|
},
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "GDB: Launch GUI over SSH with X11 forwarding",
|
|
"description": "Remotely starts the program using gdb with X11 forwarding",
|
|
"body": {
|
|
"type": "gdb",
|
|
"request": "launch",
|
|
"name": "${6:Launch Program (SSH + X11)}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"ssh": {
|
|
"host": "${2:127.0.0.1}",
|
|
"cwd": "${3:/home/remote_user/project/}",
|
|
"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
|
|
"user": "${5:remote_user}",
|
|
"forwardX11": true,
|
|
"x11host": "localhost",
|
|
"x11port": 6000
|
|
},
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "GDB: Debug external embedded device",
|
|
"description": "Debugs an embedded microcontroller supported by GDB by attaching over extended-remote",
|
|
"body": {
|
|
"type": "gdb",
|
|
"request": "attach",
|
|
"name": "${6:Debug Microcontroller}",
|
|
"target": "extended-remote ${2:/dev/cu.usbmodem00000000}",
|
|
"executable": "${1:./bin/executable.elf}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"autorun": [
|
|
"monitor tpwr enable",
|
|
"monitor swdp_scan",
|
|
"attach 1",
|
|
"load ${1:./bin/executable.elf}"
|
|
]
|
|
},
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "lldb-mi",
|
|
"program": "./out/src/lldb.js",
|
|
"runtime": "node",
|
|
"label": "LLDB",
|
|
"languages": [
|
|
"c",
|
|
"cpp",
|
|
"d",
|
|
"objective-c",
|
|
"fortran",
|
|
"fortran-modern",
|
|
"fortran90",
|
|
"fortran_free-form",
|
|
"fortran_fixed-form",
|
|
"rust",
|
|
"pascal",
|
|
"objectpascal",
|
|
"ada",
|
|
"nim",
|
|
"arm",
|
|
"asm",
|
|
"vala",
|
|
"crystal",
|
|
"kotlin",
|
|
"zig"
|
|
],
|
|
"variables": {
|
|
"FileBasenameNoExt": "code-debug.getFileBasenameNoExt",
|
|
"FileNameNoExt": "code-debug.getFileNameNoExt"
|
|
},
|
|
"configurationAttributes": {
|
|
"launch": {
|
|
"required": [
|
|
"target"
|
|
],
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "Path of executable"
|
|
},
|
|
"arguments": {
|
|
"type": "string",
|
|
"description": "Arguments to append after the executable"
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "project path"
|
|
},
|
|
"lldbmipath": {
|
|
"type": "string",
|
|
"description": "Path to the lldb-mi executable or the command if in PATH",
|
|
"default": "lldb-mi"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"description": "Environment overriding the lldb-mi (and in turn also the process) environment",
|
|
"default": null
|
|
},
|
|
"debugger_args": {
|
|
"type": "array",
|
|
"description": "Additional arguments to pass to LLDB",
|
|
"default": []
|
|
},
|
|
"pathSubstitutions": {
|
|
"type": "object",
|
|
"description": "Help LLDB find your source using path substitutions (LLDB `target.source-map)` variable",
|
|
"default": {
|
|
"<fromPath>": "<toPath>"
|
|
}
|
|
},
|
|
"valuesFormatting": {
|
|
"type": "string",
|
|
"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
|
|
"default": "parseText",
|
|
"enum": [
|
|
"disabled",
|
|
"parseText",
|
|
"prettyPrinters"
|
|
]
|
|
},
|
|
"printCalls": {
|
|
"type": "boolean",
|
|
"description": "Prints all lldb calls to the console",
|
|
"default": false
|
|
},
|
|
"showDevDebugOutput": {
|
|
"type": "boolean",
|
|
"description": "Prints all lldb responses to the console",
|
|
"default": false
|
|
},
|
|
"autorun": {
|
|
"type": "array",
|
|
"description": "lldb commands to run when starting to debug",
|
|
"default": []
|
|
},
|
|
"stopAtEntry": {
|
|
"type": [
|
|
"boolean",
|
|
"string"
|
|
],
|
|
"description": "Whether debugger should stop at application entry point",
|
|
"default": false
|
|
},
|
|
"ssh": {
|
|
"required": [
|
|
"host",
|
|
"cwd",
|
|
"user"
|
|
],
|
|
"type": "object",
|
|
"description": "If this is set then the extension will connect to an ssh host and run lldb there",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string",
|
|
"description": "Remote host name/ip to connect to"
|
|
},
|
|
"port": {
|
|
"type": [
|
|
"number",
|
|
"string"
|
|
],
|
|
"description": "Remote port number",
|
|
"default": 22
|
|
},
|
|
"user": {
|
|
"type": "string",
|
|
"description": "Username to connect as"
|
|
},
|
|
"password": {
|
|
"type": "string",
|
|
"description": "Plain text password (unsafe; if possible use keyfile instead)"
|
|
},
|
|
"keyfile": {
|
|
"type": "string",
|
|
"description": "Absolute path to private key"
|
|
},
|
|
"useAgent": {
|
|
"type": "boolean",
|
|
"description": "Auto-detect the running SSH agent (via SSH_AUTH_SOCK environment variable) and use it to perform authentication",
|
|
"default": false
|
|
},
|
|
"sourceFileMap": {
|
|
"type": "object",
|
|
"description": "Mapping of source paths (from GDB on ssh remote) to local (IDE) paths.",
|
|
"default": {
|
|
"<sourcePath>": "<localPath>"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "Working directory for the debugger.\nIf `ssh.sourceFileMap` is not set, then this is also the project path on the remote for mapping with `cwd`."
|
|
},
|
|
"forwardX11": {
|
|
"type": "boolean",
|
|
"description": "If true, the server will redirect x11 to the local host",
|
|
"default": true
|
|
},
|
|
"x11host": {
|
|
"type": "string",
|
|
"description": "Hostname/ip to redirect X11 data to",
|
|
"default": "localhost"
|
|
},
|
|
"x11port": {
|
|
"type": [
|
|
"number",
|
|
"string"
|
|
],
|
|
"description": "Port to redirect X11 data to (by default port = display + 6000)",
|
|
"default": 6000
|
|
},
|
|
"remotex11screen": {
|
|
"type": "number",
|
|
"description": "Screen to start the application on the remote side",
|
|
"default": 0
|
|
},
|
|
"bootstrap": {
|
|
"type": "string",
|
|
"description": "Content will be executed on the SSH host before the debugger call."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"attach": {
|
|
"required": [
|
|
"target"
|
|
],
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "PID of running program or program name"
|
|
},
|
|
"valuesFormatting": {
|
|
"type": "string",
|
|
"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
|
|
"default": "parseText",
|
|
"enum": [
|
|
"disabled",
|
|
"parseText",
|
|
"prettyPrinters"
|
|
]
|
|
},
|
|
"printCalls": {
|
|
"type": "boolean",
|
|
"description": "Prints all LLDB calls to the console",
|
|
"default": false
|
|
},
|
|
"showDevDebugOutput": {
|
|
"type": "boolean",
|
|
"description": "Prints all LLDB responses to the console",
|
|
"default": false
|
|
},
|
|
"executable": {
|
|
"type": "string",
|
|
"description": "Path of executable for debugging symbols"
|
|
},
|
|
"lldbmipath": {
|
|
"type": "string",
|
|
"description": "Path to the lldb-mi executable or the command if in PATH",
|
|
"default": "lldb-mi"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"description": "Environment overriding the lldb-mi (and in turn also the process) environment",
|
|
"default": null
|
|
},
|
|
"debugger_args": {
|
|
"type": "array",
|
|
"description": "Additional arguments to pass to LLDB",
|
|
"default": []
|
|
},
|
|
"pathSubstitutions": {
|
|
"type": "object",
|
|
"description": "Help LLDB find your source using path substitutions (LLDB `target.source-map)` variable",
|
|
"default": {
|
|
"<fromPath>": "<toPath>"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "project path",
|
|
"default": "${workspaceRoot}"
|
|
},
|
|
"autorun": {
|
|
"type": "array",
|
|
"description": "lldb commands to run when starting to debug",
|
|
"default": []
|
|
},
|
|
"stopAtConnect": {
|
|
"type": "boolean",
|
|
"description": "Whether debugger should stop after connecting to target",
|
|
"default": false
|
|
},
|
|
"stopAtEntry": {
|
|
"type": [
|
|
"boolean",
|
|
"string"
|
|
],
|
|
"description": "Whether debugger should stop at application entry point",
|
|
"default": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"initialConfigurations": [
|
|
{
|
|
"name": "Debug",
|
|
"type": "lldb-mi",
|
|
"request": "launch",
|
|
"target": "./bin/executable",
|
|
"cwd": "${workspaceRoot}",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
],
|
|
"configurationSnippets": [
|
|
{
|
|
"label": "LLDB: Launch Program",
|
|
"description": "Starts the program using lldb-mi",
|
|
"body": {
|
|
"type": "lldb-mi",
|
|
"request": "launch",
|
|
"name": "${2:Launch Program}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "LLDB: Attach to PID",
|
|
"description": "Attaches to a running program pid using lldb-mi",
|
|
"body": {
|
|
"type": "lldb-mi",
|
|
"request": "attach",
|
|
"name": "${2:Attach to PID}",
|
|
"target": "${1:[PID]}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "LLDB: Launch over SSH",
|
|
"description": "Remotely starts the program using lldb-mi",
|
|
"body": {
|
|
"type": "lldb-mi",
|
|
"request": "launch",
|
|
"name": "${6:Launch Program (SSH)}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"ssh": {
|
|
"host": "${2:127.0.0.1}",
|
|
"cwd": "${3:/home/remote_user/project/}",
|
|
"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
|
|
"user": "${5:remote_user}"
|
|
},
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "LLDB: Launch GUI over SSH with X11 forwarding",
|
|
"description": "Remotely starts the program using lldb-mi with X11 forwarding",
|
|
"body": {
|
|
"type": "lldb-mi",
|
|
"request": "launch",
|
|
"name": "${6:Launch Program (SSH + X11)}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"ssh": {
|
|
"host": "${2:127.0.0.1}",
|
|
"cwd": "${3:/home/remote_user/project/}",
|
|
"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
|
|
"user": "${5:remote_user}",
|
|
"forwardX11": true,
|
|
"x11host": "localhost",
|
|
"x11port": 6000
|
|
},
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "mago-mi",
|
|
"program": "./out/src/mago.js",
|
|
"runtime": "node",
|
|
"label": "Mago-MI",
|
|
"variables": {
|
|
"FileBasenameNoExt": "code-debug.getFileBasenameNoExt",
|
|
"FileNameNoExt": "code-debug.getFileNameNoExt"
|
|
},
|
|
"configurationAttributes": {
|
|
"launch": {
|
|
"required": [
|
|
"target"
|
|
],
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "Path of executable"
|
|
},
|
|
"arguments": {
|
|
"type": "string",
|
|
"description": "Arguments to append after the executable"
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "project path"
|
|
},
|
|
"magomipath": {
|
|
"type": "string",
|
|
"description": "Path to the mago-mi executable or the command if in PATH",
|
|
"default": "mago-mi"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"description": "Environment overriding the mago-mi (and in turn also the process) environment",
|
|
"default": null
|
|
},
|
|
"debugger_args": {
|
|
"type": "array",
|
|
"description": "Additional arguments to pass to mago",
|
|
"default": []
|
|
},
|
|
"valuesFormatting": {
|
|
"type": "string",
|
|
"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
|
|
"default": "parseText",
|
|
"enum": [
|
|
"disabled",
|
|
"parseText",
|
|
"prettyPrinters"
|
|
]
|
|
},
|
|
"printCalls": {
|
|
"type": "boolean",
|
|
"description": "Prints all mago calls to the console",
|
|
"default": false
|
|
},
|
|
"showDevDebugOutput": {
|
|
"type": "boolean",
|
|
"description": "Prints all mago responses to the console",
|
|
"default": false
|
|
},
|
|
"autorun": {
|
|
"type": "array",
|
|
"description": "mago commands to run when starting to debug",
|
|
"default": []
|
|
}
|
|
}
|
|
},
|
|
"attach": {
|
|
"required": [
|
|
"target"
|
|
],
|
|
"properties": {
|
|
"target": {
|
|
"type": "string",
|
|
"description": "PID of running program or program name"
|
|
},
|
|
"valuesFormatting": {
|
|
"type": "string",
|
|
"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
|
|
"default": "parseText",
|
|
"enum": [
|
|
"disabled",
|
|
"parseText",
|
|
"prettyPrinters"
|
|
]
|
|
},
|
|
"printCalls": {
|
|
"type": "boolean",
|
|
"description": "Prints all mago calls to the console",
|
|
"default": false
|
|
},
|
|
"showDevDebugOutput": {
|
|
"type": "boolean",
|
|
"description": "Prints all mago responses to the console",
|
|
"default": false
|
|
},
|
|
"executable": {
|
|
"type": "string",
|
|
"description": "Path of executable for debugging symbols"
|
|
},
|
|
"magomipath": {
|
|
"type": "string",
|
|
"description": "Path to the mago-mi executable or the command if in PATH",
|
|
"default": "mago-mi"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"description": "Environment overriding the mago-mi (and in turn also the process) environment",
|
|
"default": null
|
|
},
|
|
"debugger_args": {
|
|
"type": "array",
|
|
"description": "Additional arguments to pass to mago",
|
|
"default": []
|
|
},
|
|
"cwd": {
|
|
"type": "string",
|
|
"description": "project path",
|
|
"default": "${workspaceRoot}"
|
|
},
|
|
"autorun": {
|
|
"type": "array",
|
|
"description": "mago commands to run when starting to debug",
|
|
"default": []
|
|
},
|
|
"stopAtConnect": {
|
|
"type": "boolean",
|
|
"description": "Whether debugger should stop after connecting to target",
|
|
"default": false
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"initialConfigurations": [
|
|
{
|
|
"name": "Debug",
|
|
"type": "mago-mi",
|
|
"request": "launch",
|
|
"target": "./bin/executable",
|
|
"cwd": "${workspaceRoot}",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
],
|
|
"configurationSnippets": [
|
|
{
|
|
"label": "Mago: Launch Program",
|
|
"description": "Starts the program using mago-mi",
|
|
"body": {
|
|
"type": "mago-mi",
|
|
"request": "launch",
|
|
"name": "${2:Launch Program}",
|
|
"target": "${1:./bin/executable}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
},
|
|
{
|
|
"label": "Mago: Attach to PID",
|
|
"description": "Attaches to a running program pid using mago-mi",
|
|
"body": {
|
|
"type": "mago-mi",
|
|
"request": "attach",
|
|
"name": "${2:Attach to PID}",
|
|
"target": "${1:[PID]}",
|
|
"cwd": "^\"\\${workspaceRoot}\"",
|
|
"valuesFormatting": "parseText"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"scripts": {
|
|
"vscode:prepublish": "tsc -p ./",
|
|
"compile": "tsc -watch -p ./"
|
|
},
|
|
"dependencies": {
|
|
"ssh2": "^1.6.0",
|
|
"vscode-debugadapter": "^1.45.1",
|
|
"vscode-debugprotocol": "^1.45.0",
|
|
"node-interval-tree": "^1.3.3",
|
|
"json-stream-stringify": "^2.0.4",
|
|
"stream-json": "^1.7.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/mocha": "^5.2.6",
|
|
"@types/node": "^11.11.3",
|
|
"@types/vscode": "^1.54.0",
|
|
"mocha": "^9.1.3",
|
|
"tslint": "^5.20.1",
|
|
"typescript": "^3.9.3",
|
|
"vscode-test": "1.3.0"
|
|
}
|
|
}
|