Update Debugging with LLDB
parent
be84b89b20
commit
a58654e79c
|
@ -6,8 +6,13 @@ Lemur can be used as a server for the gdb/lldb debuggers. If you're a homebrew d
|
|||
|
||||
To debug Virtual Boy games, you need a version of gdb or lldb built to target the Virtual Boy. The llvm-v810 compiler comes with a working version of lldb. At this time, there is no compatible version of gdb, so just use lldb.
|
||||
|
||||
1. Download the latest [llvm-v810 compiler](https://github.com/SupernaviX/v810-llvm/releases) for your OS (Windows, Darwin/Mac, or Linux).
|
||||
2. On closer inspection, lldb isn't getting bundled in there. Gotta fix that. Sorry whoever's reading this, either compile llvm yourself or give me a few days to fix it.
|
||||
1. Download the latest [llvm-v810 compiler](https://github.com/SupernaviX/v810-llvm/releases) for your OS (Windows, Darwin/Mac, or Linux). The download link is under "Assets".
|
||||
* For Windows, download `llvm-v810-windows-main.7z` from the assets of a release with "Windows" in the name.
|
||||
* For Mac, download `llvm-v810-darwin-main.tar.xz` from the assets of a release with "Darwin" in the name.
|
||||
* For Linux, download `llvm-v810-linux-main.tar.xz` from the assets of a release with "Linux" in the name.
|
||||
2. Extract the files.
|
||||
* For command-line debugging, you'll need the lldb executable from `llvm-v810/bin/lldb` (or `llvm-v810/bin/lldb.exe` on Windows).
|
||||
* For IDE integration, you'll need the lldb-dap executable from `llvm-v810/bin/lldb-dap` (or `llvm-v810/bin/lldb-dap.exe` on Windows).
|
||||
|
||||
## Compiling with debug info
|
||||
|
||||
|
@ -38,5 +43,62 @@ lldb -o "process connect connect://127.0.0.1:8080"
|
|||
At this point you can debug your game like any program. See [this lldb tutorial](https://lldb.llvm.org/use/tutorial.html) for some examples of what you can do.
|
||||
|
||||
## VSCode integration with lldb-dap
|
||||
If your IDE has a debugger, lldb-dap lets you use it to debug your Virtual Boy game. The below instructions are for VSCode, but this will work for almost any IDE (except VUEngine Studio).
|
||||
1. Download the [LLDB DAP](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.lldb-dap) extension.
|
||||
2. Configure the extension to use the lldb-dap you downloaded earlier. Add this to your `.vscode/settings.json`:
|
||||
```json
|
||||
{
|
||||
"lldb-dap.executable-path": "/path/to/llvm-v810/bin/lldb-dap"
|
||||
}
|
||||
```
|
||||
3. Add a launch configuration to your project. Add this to `.vscode/launch.json`:
|
||||
```json
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug",
|
||||
"type": "lldb-dap",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/mygame.elf", // path to your .elf file
|
||||
"launchCommands": ["gdb-remote 8080"], // replace 8080 with whichever port your server uses
|
||||
"preLaunchTask": "Emulate" // see step 4
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
4. When you click the "Debug" button, you probably want to launch the emulator with your game. Set up a task to do this. Add this to `.vscode/tasks.json`:
|
||||
```json
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Emulate",
|
||||
"type": "shell",
|
||||
"command": "/path/to/lemur",
|
||||
"args": [
|
||||
"${workspaceFolder}/mygame.vb", // path to your rom
|
||||
"--debug-port",
|
||||
"8080"
|
||||
],
|
||||
"isBackground": true,
|
||||
"problemMatcher": {
|
||||
"pattern": {
|
||||
"regexp": ""
|
||||
},
|
||||
"background": {
|
||||
"activeOnStart": true,
|
||||
"beginsPattern": "Connecting",
|
||||
"endsPattern": "Connecting"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
If you're feeling spicy, you can add a "Compile" task which this "Emulate" task depends on, so that clicking "Debug" is all you need to do to start debugging.
|
||||
|
||||
TODO: write this up tomorrow it's like 2am
|
||||
Happy debugging!
|
||||
|
|
Loading…
Reference in New Issue