Add readme with video demo

pull/36055/head
DevTekVE 1 month ago
parent 3e2bc8a5f3
commit 521aefc190
  1. 65
      docs/DEBUGGING_SAFETY.md
  2. BIN
      docs/assets/demo safety debug.mp4

@ -0,0 +1,65 @@
# Debugging Panda Safety with Replay Drive + LLDB
By default, `libsafety.so` is built with optimizations and stripped symbols, which makes C-level debugging impractical.
This workflow fixes that by:
1. Building `libsafety` with debug symbols and no optimizations.
2. Running `replay_drive.py` with a user-provided route.
3. Attaching LLDB automatically from VS Code.
---
## Building with Debug Symbols
Rebuild `libsafety` with the `--unoptimized` flag:
```bash
scons -u -j$(nproc) --unoptimized
```
This enables the debug flags:
* `-g` (include symbols)
* `-O0` (disable optimizations)
* `-fno-omit-frame-pointer` (keep stack traces usable)
---
## Debugging Workflow
1. **Build with debug symbols**
```bash
scons -u -j$(nproc) --unoptimized
```
2. **Start the debugger in VS Code**
* Select **Replay drive + Safety LLDB**.
* Enter the route or segment when prompted.
3. **Attach LLDB**
* When prompted, pick the running **`replay_drive` process**.
* ⚠ Attach quickly, or `replay_drive` will start consuming messages.
✅ Tip: Add a Python breakpoint at the start of `replay_drive.py` to pause execution and give yourself time to attach LLDB.
4. **Set breakpoints in VS Code**
Breakpoints can be set directly in `libsafety.c` (or any C file).
No extra LLDB commands are required — just place breakpoints in the editor.
5. **Resume execution**
Once attached, you can step through both Python and C safety code as CAN logs are replayed.
---
## Notes
* Always rebuild with `--unoptimized` before debugging.
* Use short routes for quicker iteration.
* Pause `replay_drive` early to avoid wasting log messages.
### Video
[demo safety debug.mp4](assets/demo%20safety%20debug.mp4)

Binary file not shown.
Loading…
Cancel
Save