You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.7 KiB
1.7 KiB
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:
- Building
libsafety
with debug symbols and no optimizations. - Running
replay_drive.py
with a user-provided route. - Attaching LLDB automatically from VS Code.
Building with Debug Symbols
Rebuild libsafety
with the --unoptimized
flag:
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
-
Build with debug symbols
scons -u -j$(nproc) --unoptimized
-
Start the debugger in VS Code
- Select Replay drive + Safety LLDB.
- Enter the route or segment when prompted.
-
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. - When prompted, pick the running
-
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. -
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.