1#!/bin/sh 2 3# Copyright 2003 Free Software Foundation, Inc. 4 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19# Please email any bugs, comments, and/or additions to this file to: 20# bug-gdb@prep.ai.mit.edu 21 22# 23# gcore.sh 24# Script to generate a core file of a running program. 25# It starts up gdb, attaches to the given PID and invokes the gcore command. 26# 27 28if [ "$#" -eq "0" ] 29then 30 echo "usage: gcore [-o filename] pid" 31 exit 2 32fi 33 34# Need to check for -o option, but set default basename to "core". 35name=core 36 37if [ "$1" = "-o" ] 38then 39 if [ "$#" -lt "3" ] 40 then 41 # Not enough arguments. 42 echo "usage: gcore [-o filename] pid" 43 exit 2 44 fi 45 name=$2 46 47 # Shift over to start of pid list 48 shift; shift 49fi 50 51# Initialise return code. 52rc=0 53 54# Loop through pids 55for pid in $* 56do 57 # Write gdb script for pid $pid. 58 59 # Avoid need for temporary files by using funky "here 60 # document" feature of sh. 61 62 /usr/bin/gdb > /dev/null << EOF 63 attach $pid 64 gcore $name.$pid 65 detach 66 quit 67EOF 68 69 if [ -r $name.$pid ] ; then 70 rc=0 71 else 72 echo gcore: failed to create $name.$pid 73 rc=1 74 break 75 fi 76 77 78done 79 80exit $rc 81 82