1{
2	"name": "lldb-vscode",
3	"displayName": "LLDB native Debug stub",
4	"version": "0.1.0",
5	"publisher": "llvm",
6	"repository": "llvm.org",
7	"description": "Debug adapter for LLDB which uses a C++ tool to interface directly with LLDB.",
8	"author": {
9		"name": "Greg Clayton",
10		"email": "clayborg@gmail.com"
11	},
12	"license": "LLVM",
13	"keywords": [
14		"multi-root ready"
15	],
16	"engines": {
17		"vscode": "^1.18.0",
18		"node": "^7.9.0"
19	},
20	"categories": [
21		"Debuggers"
22	],
23	"private": true,
24	"devDependencies": {
25		"@types/node": "7.0.43",
26		"@types/mocha": "2.2.45",
27		"typescript": "2.6.2",
28		"mocha": "4.0.1",
29		"vscode": "1.1.10",
30		"vscode-debugadapter-testsupport": "1.25.0",
31		"tslint": "5.8.0",
32		"vsce": "^1.36.3"
33	},
34	"contributes": {
35		"languages": [
36			{
37                "id": "lldb.disassembly",
38                "aliases": [
39                "Disassembly"
40                ],
41                "extensions": [
42                ".disasm"
43                ]
44			}
45		],
46		"grammars": [
47			{
48                "language": "lldb.disassembly",
49                "scopeName": "source.disassembly",
50                "path": "./syntaxes/disassembly.json"
51            }
52        ],
53        "breakpoints": [
54          {
55            "language": "ada"
56          },
57          {
58            "language": "arm"
59          },
60          {
61            "language": "asm"
62          },
63          {
64            "language": "c"
65          },
66          {
67            "language": "cpp"
68          },
69          {
70            "language": "crystal"
71          },
72          {
73            "language": "d"
74          },
75          {
76            "language": "fortan"
77          },
78          {
79            "language": "fortran-modern"
80          },
81          {
82            "language": "nim"
83          },
84          {
85            "language": "objective-c"
86          },
87          {
88            "language": "objectpascal"
89          },
90          {
91            "language": "pascal"
92          },
93          {
94            "language": "rust"
95          },
96          {
97            "language": "swift"
98          }
99        ],
100		"debuggers": [
101			{
102				"type": "lldb-vscode",
103				"label": "Native LLDB Debugger",
104				"enableBreakpointsFor": {
105					"languageIds": [
106						"ada",
107						"arm",
108						"asm",
109						"c",
110						"cpp",
111						"crystal",
112						"d",
113						"fortan",
114						"fortran-modern",
115						"nim",
116						"objective-c",
117						"objectpascal",
118						"pascal",
119						"rust",
120						"swift"
121					]
122				},
123				"program": "./bin/lldb-vscode",
124				"windows": {
125					"program": "./bin/lldb-vscode.exe"
126				},
127				"configurationAttributes": {
128					"launch": {
129						"required": [
130							"program"
131						],
132						"properties": {
133							"program": {
134								"type": "string",
135								"description": "Path to the program to debug."
136							},
137							"args": {
138								"type": [
139									"array",
140									"string"
141								],
142								"description": "Program arguments.",
143								"default": []
144							},
145							"cwd": {
146								"type": "string",
147								"description": "Program working directory.",
148								"default": "${workspaceRoot}"
149							},
150							"env": {
151								"type": "array",
152								"description": "Additional environment variables to set when launching the program. This is an array of strings that contains the variable name followed by an optional '=' character and the environment variable's value. Example:  [\"FOO=BAR\", \"BAZ\"]",
153								"default": []
154							},
155							"stopOnEntry": {
156								"type": "boolean",
157								"description": "Automatically stop after launch.",
158								"default": false
159							},
160							"disableASLR": {
161								"type": "boolean",
162								"description": "Enable or disable Address space layout randomization if the debugger supports it.",
163								"default": true
164							},
165							"disableSTDIO": {
166								"type": "boolean",
167								"description": "Don't retrieve STDIN, STDOUT and STDERR as the program is running.",
168								"default": false
169							},
170							"shellExpandArguments": {
171								"type": "boolean",
172								"description": "Expand program arguments as a shell would without actually launching the program in a shell.",
173								"default": false
174							},
175							"detachOnError": {
176								"type": "boolean",
177								"description": "Detach from the program.",
178								"default": false
179							},
180							"sourcePath": {
181								"type": "string",
182								"description": "Specify a source path to remap \"./\" to allow full paths to be used when setting breakpoints in binaries that have relative source paths."
183							},
184							"sourceMap": {
185								"type": "array",
186								"description": "Specify an array of path remappings; each element must itself be a two element array containing a source and destination pathname. Overrides sourcePath.",
187								"default": []
188							},
189							"debuggerRoot": {
190								"type": "string",
191								"description": "Specify a working directory to set the debug adaptor to so relative object files can be located."
192							},
193							"targetTriple": {
194								"type": "string",
195								"description": "Triplet of the target architecture to override value derived from the program file."
196							},
197							"platformName": {
198								"type": "string",
199								"description": "Name of the execution platform to override value derived from the program file."
200							},
201							"initCommands": {
202								"type": "array",
203								"description": "Initialization commands executed upon debugger startup.",
204								"default": []
205							},
206							"preRunCommands": {
207								"type": "array",
208								"description": "Commands executed just before the program is launched.",
209								"default": []
210							},
211							"postRunCommands": {
212								"type": "array",
213								"description": "Commands executed just as soon as the program is successfully launched when it's in a stopped state prior to any automatic continuation.",
214								"default": []
215							},
216							"launchCommands": {
217								"type": "array",
218								"description": "Custom commands that are executed instead of launching a process. A target will be created with the launch arguments prior to executing these commands. The commands may optionally create a new target and must perform a launch. A valid process must exist after these commands complete or the \"launch\" will fail. Launch the process with \"process launch -s\" to make the process to at the entry point since lldb-vscode will auto resume if necessary.",
219								"default": []
220							},
221							"stopCommands": {
222								"type": "array",
223								"description": "Commands executed each time the program stops.",
224								"default": []
225							},
226							"exitCommands": {
227								"type": "array",
228								"description": "Commands executed at the end of debugging session.",
229								"default": []
230							},
231							"runInTerminal": {
232								"type": "boolean",
233								"description": "Launch the program inside an integrated terminal in the IDE. Useful for debugging interactive command line programs",
234								"default": false
235							},
236							"timeout": {
237								"type": "string",
238								"description": "The time in seconds to wait for a program to stop at entry point when launching with \"launchCommands\". Defaults to 30 seconds."
239							}
240						}
241					},
242					"attach": {
243						"properties": {
244							"program": {
245								"type": "string",
246								"description": "Path to the program to attach to."
247							},
248							"pid": {
249								"type": [
250									"number",
251									"string"
252								],
253								"description": "System process ID to attach to."
254							},
255							"waitFor": {
256								"type": "boolean",
257								"description": "If set to true, then wait for the process to launch by looking for a process with a basename that matches `program`. No process ID needs to be specified when using this flag.",
258								"default": true
259							},
260							"sourcePath": {
261								"type": "string",
262								"description": "Specify a source path to remap \"./\" to allow full paths to be used when setting breakpoints in binaries that have relative source paths."
263							},
264							"sourceMap": {
265								"type": "array",
266								"description": "Specify an array of path remappings; each element must itself be a two element array containing a source and destination pathname. Overrides sourcePath.",
267								"default": []
268							},
269							"debuggerRoot": {
270								"type": "string",
271								"description": "Specify a working directory to set the debug adaptor to so relative object files can be located."
272							},
273							"targetTriple": {
274								"type": "string",
275								"description": "Triplet of the target architecture to override value derived from the program file."
276							},
277							"platformName": {
278								"type": "string",
279								"description": "Name of the execution platform to override value derived from the program file."
280							},
281							"attachCommands": {
282								"type": "array",
283								"description": "Custom commands that are executed instead of attaching to a process ID or to a process by name. These commands may optionally create a new target and must perform an attach. A valid process must exist after these commands complete or the \"attach\" will fail.",
284								"default": []
285							},
286							"initCommands": {
287								"type": "array",
288								"description": "Initialization commands executed upon debugger startup.",
289								"default": []
290							},
291							"preRunCommands": {
292								"type": "array",
293								"description": "Commands executed just before the program is attached to.",
294								"default": []
295							},
296							"postRunCommands": {
297								"type": "array",
298								"description": "Commands executed just as soon as the program is successfully attached when it's in a stopped state prior to any automatic continuation.",
299								"default": []
300							},
301							"stopCommands": {
302								"type": "array",
303								"description": "Commands executed each time the program stops.",
304								"default": []
305							},
306							"exitCommands": {
307								"type": "array",
308								"description": "Commands executed at the end of debugging session.",
309								"default": []
310							},
311							"coreFile": {
312								"type": "string",
313								"description": "Path to the core file to debug."
314							},
315							"timeout": {
316								"type": "string",
317								"description": "The time in seconds to wait for a program to stop when attaching using \"attachCommands\". Defaults to 30 seconds."
318							}
319						}
320					}
321				},
322				"initialConfigurations": [
323					{
324						"type": "lldb-vscode",
325						"request": "launch",
326						"name": "Debug",
327						"program": "${workspaceRoot}/<your program>",
328						"args": [],
329						"env": [],
330						"cwd": "${workspaceRoot}"
331					}
332				],
333				"configurationSnippets": [
334					{
335						"label": "LLDB: Launch",
336						"description": "",
337						"body": {
338							"type": "lldb-vscode",
339							"request": "launch",
340							"name": "${2:Launch}",
341							"program": "^\"\\${workspaceRoot}/${1:<your program>}\"",
342							"args": [],
343							"env": [],
344							"cwd": "^\"\\${workspaceRoot}\""
345						}
346					}
347				]
348			}
349		]
350	}
351}
352