mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 10:05:06 +03:00
Add rust-gdbgui script.
This script invokes the gdbgui graphical GDB front-end with the Rust pretty printers loaded. The script does not install gdbgui, that must be done manually.
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
# Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
# file at the top-level directory of this distribution and at
|
||||
# http://rust-lang.org/COPYRIGHT.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
# option. This file may not be copied, modified, or distributed
|
||||
# except according to those terms.
|
||||
|
||||
# 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 the 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
|
||||
|
||||
# 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}" \
|
||||
"${@}"
|
||||
|
||||
Reference in New Issue
Block a user