mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 06:17:47 +08:00
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:

committed by
Sergio Durigan Junior

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.
|
# 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".
|
# Need to check for -o option, but set default basename to "core".
|
||||||
name=core
|
name=core
|
||||||
|
|
||||||
if [ "$1" = "-o" ]
|
# When the -a option is present, this may hold additional commands
|
||||||
then
|
# to ensure gdb dumps all mappings (OS dependent).
|
||||||
if [ "$#" -lt "3" ]
|
dump_all_cmds=()
|
||||||
then
|
|
||||||
# Not enough arguments.
|
|
||||||
echo "usage: @GCORE_TRANSFORM_NAME@ [-o filename] pid"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
name=$2
|
|
||||||
|
|
||||||
# Shift over to start of pid list
|
while getopts :ao: opt; do
|
||||||
shift; shift
|
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
|
fi
|
||||||
|
|
||||||
# Attempt to fetch the absolute path to the gcore script that was
|
# 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.
|
# available but not accessible as GDB would get stopped on SIGTTIN.
|
||||||
$binary_path/@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
|
$binary_path/@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
|
||||||
-ex "set pagination off" -ex "set height 0" -ex "set width 0" \
|
-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
|
-ex "attach $pid" -ex "gcore $name.$pid" -ex detach -ex quit
|
||||||
|
|
||||||
if [ -r $name.$pid ] ; then
|
if [ -r $name.$pid ] ; then
|
||||||
|
Reference in New Issue
Block a user