Implement "-a" command line option for gcore
With the new "-a" command line option, the user may request gcore to actually dump all present memory mappings. The actual effect of this argument is OS dependent. On GNU/Linux, it will disable use-coredump-filter and enable dump-excluded-mappings. gdb/ChangeLog: 2017-11-29 Sergio Lopez <slp@redhat.com> * gcore.in: Add "-a" command line option for instructing gdb to dump all memory mappings (OS dependent).
This commit is contained in:
parent
1e52e8495a
commit
cd93789b89
47
gdb/gcore.in
47
gdb/gcore.in
@ -20,27 +20,39 @@
|
||||
# It starts up gdb, attaches to the given PID and invokes the gcore command.
|
||||
#
|
||||
|
||||
if [ "$#" -eq "0" ]
|
||||
then
|
||||
echo "usage: @GCORE_TRANSFORM_NAME@ [-o filename] pid"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Need to check for -o option, but set default basename to "core".
|
||||
name=core
|
||||
|
||||
if [ "$1" = "-o" ]
|
||||
then
|
||||
if [ "$#" -lt "3" ]
|
||||
then
|
||||
# Not enough arguments.
|
||||
echo "usage: @GCORE_TRANSFORM_NAME@ [-o filename] pid"
|
||||
exit 2
|
||||
fi
|
||||
name=$2
|
||||
# When the -a option is present, this may hold additional commands
|
||||
# to ensure gdb dumps all mappings (OS dependent).
|
||||
dump_all_cmds=()
|
||||
|
||||
# Shift over to start of pid list
|
||||
shift; shift
|
||||
while getopts :ao: opt; do
|
||||
case $opt in
|
||||
a)
|
||||
case $OSTYPE in
|
||||
linux*)
|
||||
dump_all_cmds=("-ex" "set use-coredump-filter off")
|
||||
dump_all_cmds+=("-ex" "set dump-excluded-mappings on")
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
o)
|
||||
name=$OPTARG
|
||||
;;
|
||||
*)
|
||||
echo "usage: @GCORE_TRANSFORM_NAME@ [-a] [-o filename] pid"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND-1))
|
||||
|
||||
if [ "$#" -eq "0" ]
|
||||
then
|
||||
echo "usage: @GCORE_TRANSFORM_NAME@ [-a] [-o filename] pid"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Attempt to fetch the absolute path to the gcore script that was
|
||||
@ -87,6 +99,7 @@ do
|
||||
# available but not accessible as GDB would get stopped on SIGTTIN.
|
||||
$binary_path/@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
|
||||
-ex "set pagination off" -ex "set height 0" -ex "set width 0" \
|
||||
"${dump_all_cmds[@]}" \
|
||||
-ex "attach $pid" -ex "gcore $name.$pid" -ex detach -ex quit
|
||||
|
||||
if [ -r $name.$pid ] ; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user