1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# Debugging Slang
This document gives examples showing how to run debuggers in the Slang codebase.
Follow the [Building Slang From Source](/docs/building.md) instructions first.
## Visual Studio
This repo includes multiple `*.natvis` files which Visual Studio picks up
automatically; no extra configuration is required.
## LLDB
If you use [LLDB][], we provide a `.lldbinit` file which enables data formatters
for types in the Slang codebase. You can use this with LLDB in your terminal via
the [`--local-lldbinit`][] flag; for example:
```
$ cmake --build --preset debug
$ lldb --local-lldbinit build/Debug/bin/slangc -- tests/byte-code/hello.slang -dump-ir
(lldb) breakpoint set --name dumpIR
(lldb) run
```
LLDB can be used with either GCC or Clang, but Clang seems to behave better
about respecting breakpoint locations and not having missing variables.
### VS Code
If instead you prefer to debug within VS Code, you can run LLDB via the
[CodeLLDB][] extension. For example, to recreate the same debugging session as
above, create a `.vscode/tasks.json` file with these contents:
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "Debug build",
"type": "shell",
"command": "cmake",
"args": ["--build", "--preset", "debug"]
}
]
}
```
Then create a `.vscode/launch.json` file with these contents:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "LLDB",
"preLaunchTask": "Debug build",
"type": "lldb",
"request": "launch",
"initCommands": ["command source .lldbinit"],
"program": "build/Debug/bin/slangc",
"args": ["tests/byte-code/hello.slang", "-dump-ir"]
}
]
}
```
Finally, place any breakpoints you want, and hit F5.
[`--local-lldbinit`]: https://lldb.llvm.org/man/lldb.html#cmdoption-lldb-local-lldbinit
[codelldb]: https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb
[lldb]: https://lldb.llvm.org/index.html
|