Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@ test-rust-gdb-debugging target=default-target features="":
# rust test for crashdump
test-rust-crashdump target=default-target features="":
{{ cargo-cmd }} test --profile={{ if target == "debug" { "dev" } else { target } }} {{ target-triple-flag }} {{ if features =="" {'--features crashdump'} else { "--features crashdump," + features } }} -- test_crashdump
{{ cargo-cmd }} test --profile={{ if target == "debug" { "dev" } else { target } }} {{ target-triple-flag }} --example crashdump {{ if features =="" {'--features crashdump'} else { "--features crashdump," + features } }}

# rust test for tracing
test-rust-tracing target=default-target features="":
Expand Down Expand Up @@ -353,6 +354,7 @@ run-rust-examples target=default-target features="":
run-rust-examples-linux target=default-target features="": (run-rust-examples target features)
{{ cargo-cmd }} run --profile={{ if target == "debug" { "dev" } else { target } }} {{ target-triple-flag }} --example tracing {{ if features =="" {''} else { "--features " + features } }}
{{ cargo-cmd }} run --profile={{ if target == "debug" { "dev" } else { target } }} {{ target-triple-flag }} --example tracing {{ if features =="" {"--features function_call_metrics" } else {"--features function_call_metrics," + features} }}
{{ cargo-cmd }} run --profile={{ if target == "debug" { "dev" } else { target } }} {{ target-triple-flag }} --example crashdump {{ if features =="" {'--features crashdump'} else { "--features crashdump," + features } }}


#########################
Expand Down
42 changes: 42 additions & 0 deletions docs/how-to-debug-a-hyperlight-guest.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,48 @@ The crashdump should be available `/tmp` or in the crash dump directory (see `HY
After the core dump has been created, to inspect the state of the guest, load the core dump file using `gdb` or `lldb`.
**NOTE: This feature has been tested with version `15.0` of `gdb` and version `17` of `lldb`, earlier versions may not work, it is recommended to use these versions or later.**

#### Using gdb

Load the core dump alongside the guest binary that was running when the crash occurred:

```bash
gdb <guest-binary> -c <core-dump-file>
```

For example:

```bash
gdb src/tests/rust_guests/bin/debug/simpleguest -c /tmp/hl_dumps/hl_core_20260225_T165358.517.elf
```

Common commands for inspecting the dump:

```gdb
# View all general-purpose registers (rip, rsp, rflags, etc.)
(gdb) info registers

# Disassemble around the crash site
(gdb) x/10i $rip

# View the stack
(gdb) x/16xg $rsp

# Backtrace (requires debug info in guest binary)
(gdb) bt

# List all memory regions in the dump (snapshot, scratch, mapped regions)
(gdb) info files

# Read memory at a specific address
(gdb) x/s <address> # null-terminated string
(gdb) x/32xb <address> # 32 bytes in hex
```

See the `crashdump` example (`cargo run --example crashdump --features crashdump`)
for a runnable demonstration of both automatic and on-demand crash dumps.

#### Using VSCode

To do this in vscode, the following configuration can be used to add debug configurations:

```vscode
Expand Down
Loading
Loading