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.
65 lines
1.9 KiB
65 lines
1.9 KiB
#!/bin/sh
|
|
|
|
# Exit if anything fails
|
|
set -e
|
|
|
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ] || [ "$1" = "--help" ]; then
|
|
echo "
|
|
rust-gdbgui
|
|
===========
|
|
gdbgui - https://gdbgui.com - is a graphical front-end to GDB
|
|
that runs in a browser. This script invokes gdbgui with the Rust
|
|
pretty printers loaded.
|
|
|
|
Simple usage : rust-gdbgui target/debug/myprog
|
|
With arguments: rust-gdbgui 'target/debug/myprog arg1 arg2...'
|
|
(note the quotes)
|
|
|
|
|
|
Hints
|
|
=====
|
|
gdbgui won't be able to find the rust 'main' method automatically, so
|
|
in its options make sure to disable the 'Add breakpoint to main after
|
|
loading executable' setting to avoid a 'File not found: main' warning
|
|
on startup.
|
|
|
|
Instead, type 'main' into gdbgui's file browser and you should get
|
|
auto-completion on the filename. Just pick 'main.rs', add a breakpoint
|
|
by clicking in the line number gutter, and type 'r' or hit the Restart
|
|
icon to start your program running.
|
|
"
|
|
exit 0
|
|
fi
|
|
|
|
# Prefer rustc in the same directory as this script
|
|
DIR="$(dirname "$0")"
|
|
if [ -x "$DIR/rustc" ]; then
|
|
RUSTC="$DIR/rustc"
|
|
else
|
|
RUSTC="rustc"
|
|
fi
|
|
|
|
# Find out where the pretty printer Python module is
|
|
RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
|
|
GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
|
|
|
|
# Set the environment variable `RUST_GDB` to overwrite the call to a
|
|
# different/specific command (defaults to `gdb`).
|
|
RUST_GDB="${RUST_GDB:-gdb}"
|
|
|
|
# Set the environment variable `RUST_GDBGUI` to overwrite the call to a
|
|
# different/specific command (defaults to `gdbgui`).
|
|
RUST_GDBGUI="${RUST_GDBGUI:-gdbgui}"
|
|
|
|
# These arguments get passed through to GDB and make it load the
|
|
# Rust pretty printers.
|
|
GDB_ARGS="--directory=\"$GDB_PYTHON_MODULE_DIRECTORY\" -iex \"add-auto-load-safe-path $GDB_PYTHON_MODULE_DIRECTORY\""
|
|
|
|
# Finally we execute gdbgui.
|
|
PYTHONPATH="$PYTHONPATH:$GDB_PYTHON_MODULE_DIRECTORY" \
|
|
exec ${RUST_GDBGUI} \
|
|
--gdb ${RUST_GDB} \
|
|
--gdb-args "${GDB_ARGS}" \
|
|
"${@}"
|
|
|