summaryrefslogtreecommitdiffstats
path: root/solenv/bin/gdb-core-bt.sh
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/gdb-core-bt.sh')
-rwxr-xr-xsolenv/bin/gdb-core-bt.sh51
1 files changed, 51 insertions, 0 deletions
diff --git a/solenv/bin/gdb-core-bt.sh b/solenv/bin/gdb-core-bt.sh
new file mode 100755
index 000000000..2216e2aba
--- /dev/null
+++ b/solenv/bin/gdb-core-bt.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#
+
+EXECUTABLE=${1}
+COREDIR=${2}
+EXITCODE=${3}
+
+if test -n "$(which gdb)"
+then
+ found=
+ for COREFILE in "$COREDIR"/core*
+ do
+ if [ -f "$COREFILE" ]
+ then
+ printf '\nIt looks like %s generated %s\nBacktraces:\n' \
+ "$EXECUTABLE" "$COREFILE"
+ GDBCOMMANDFILE=$(mktemp)
+ printf "info registers\nthread apply all backtrace full\n" \
+ >"$GDBCOMMANDFILE"
+ guess=$(file "$COREFILE")
+ guess=${guess#* execfn: \'}
+ guess=${guess%%\'*}
+ if [ ! -x "$guess" ]; then guess=$EXECUTABLE; fi
+ gdb -iex "add-auto-load-safe-path ${INSTDIR?}" -x "$GDBCOMMANDFILE" --batch "$guess" \
+ "$COREFILE" && found=x
+ rm "$GDBCOMMANDFILE"
+ echo
+ fi
+ done
+ if [ -z "$found" -a "$EXITCODE" -ge 128 ]; then
+ echo
+ echo "No core file identified in directory ${COREDIR}"
+ echo "To show backtraces for crashes during test execution,"
+ echo "enable core files with:"
+ echo
+ echo " ulimit -c unlimited"
+ echo
+ exit 1
+ fi
+else
+ echo "You need gdb in your path to show backtraces"
+ exit 1
+fi