This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Tools to classify / uniquify core dumps or stack traces?
- From: Aurelian Melinte <ame01 at gmx dot net>
- To: gdb at sourceware dot org
- Cc: Paul Smith <psmith at gnu dot org>
- Date: Thu, 01 Aug 2013 19:05:30 -0400
- Subject: Re: Tools to classify / uniquify core dumps or stack traces?
- References: <1375385181 dot 3028 dot 5 dot camel at homebase> <20130801193547 dot GA12116 at host2 dot jankratochvil dot net>
On 01/08/2013 3:35 PM, Jan Kratochvil wrote:
On Thu, 01 Aug 2013 21:26:21 +0200, Paul Smith wrote:
Hi all. I've got an environment where I'm getting lots of core dumps
from various places and it's very tedious to go through them and
determine which ones are for unique problems, and which are essentially
duplicates (same bug causing the core dump).
I was thinking of throwing together some kind of Perl or Python script
that could compare and categorize stack traces, but I thought surely
someone must have done something like this before.
Anyone have any pointers or thoughts about something like this?
I use a home-brewed script - pasted below - to turn a collection of core
dumps into a report for each core. Then I sift manually through but
still much faster than analyzing core by core.
Regards,
a.
#!/bin/bash
#
# A script to extract core-file informations
#
if [ $# -ne 1 ]
then
echo "Usage:`basename $0` <for-binary-image>"
exit -1
else
binimg=$1
fi
# Today and yesterdays cores
cores=`find .-name '*.core' -mtime -1`
#cores=`find . -name '*.core'`
for corein $cores
do
gdblogfile="$core-gdb.log"
rm $gdblogfile
bininfo=`ls -l $binimg`
coreinfo=`ls -l $core`
gdb -batch \
-ex "set logging file$gdblogfile" \
-ex "set logging on" \
-ex "set pagination off" \
-ex "printf\"**\n** Process info for$binimg -$core \n** Generated`date`\n\"" \
-ex "printf\"**\n**$bininfo \n**$coreinfo\n**\n\"" \
-ex "file$binimg" \
-ex "core-file$core" \
-ex "bt" \
-ex "info proc" \
-ex "printf\"*\n* Libraries\n*\n\"" \
-ex "info sharedlib" \
-ex "printf\"*\n* Memory map\n*\n\"" \
-ex "info target" \
-ex "printf\"*\n* Registers\n*\n\"" \
-ex "info registers" \
-ex "printf\"*\n* Current instructions\n*\n\"" -ex "x/16i\$pc" \
-ex "printf\"*\n* Threads (full)\n*\n\"" \
-ex "info threads" \
-ex "bt" \
-ex "thread apply all bt full" \
-ex "printf\"*\n* Threads (basic)\n*\n\"" \
-ex "info threads" \
-ex "thread apply all bt" \
-ex "printf\"*\n* Done\n*\n\"" \
-ex "quit"
done