From a6c2be12b4d17ce974615f3df3bfbd32c0bf1bee Mon Sep 17 00:00:00 2001 From: mquinson Date: Wed, 19 Jul 2006 14:20:27 +0000 Subject: [PATCH] A little script which saved my soul one day I messed up with exceptions git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2633 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- tools/xbt_exception_checker | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 tools/xbt_exception_checker diff --git a/tools/xbt_exception_checker b/tools/xbt_exception_checker new file mode 100755 index 0000000000..3ebadcca72 --- /dev/null +++ b/tools/xbt_exception_checker @@ -0,0 +1,43 @@ +#! /bin/bash + +# This little script parse a list of C files, and extract the TRY blocks of it. +# Martin Quinson, 2006. +# Demerdierensiesich licence. + +# It can reveal usefull when you have a segfault on exception throwing. This +# is often the symptom that something somewhere got out of a TRY block with +# return, goto, break or such. This is forbiden because some extra cleanups +# must be performed at the end of the block. + +# So, if it happens to you, you may find this script usefull: let it extract +# all the TRY blocks of your project, and grep for the forbidden keywords +# given above. + +# You obviously have to adapt it to your case. The proper solution would be +# to accept the extra -I pathes from the command line. +# Patch welcome ;) + +for file in `find -name '*.c'` ; do + +base=`dirname $file` +cmd="cat $file \ + | cpp -I/home/mquinson/CVSIMPORT/gras/gras/include \ + -I/home/mquinson/CVSIMPORT/gras/gras/src \ + -I/home/mquinson/CVSIMPORT/gras/gras/src/include \ + -I$base \ + -D__XBT_EX_H__ -D_XBT_LOG_H_ \ + | sed -n -e '/TRY/,/CATCH/p' \ + | sed -e 's/^.*TRY.*$/----------------/' -e '/CATCH/d'" + +err=`eval $cmd 2>&1 >/dev/null` +if [ -n "$err" ] ; then + echo "XXXXXXXXXX ERROR IN FILE $file" + echo $err +fi + +if [ -n "`eval $cmd 2>/dev/null`" ] ; then + echo "XXX FILE $file" + eval "$cmd" 2>/dev/null +fi + +done -- 2.20.1