diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-06-03 08:55:32 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-06-03 14:08:37 +0200 |
commit | 756c027198adc5212d46d72e0628c90698652af5 (patch) | |
tree | 53b6f4d0f42ef2c453f6c537f861adef395b8b29 | |
parent | 03f872a80a3a7477c206454095f629cb0e8e91dd (diff) |
enable backtraces for unit tests on macos
Change-Id: I4f07e1e7b35bccc217d78662a45ac5eaf5865ee7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95394
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rwxr-xr-x | solenv/bin/lldb-core-bt.sh | 50 | ||||
-rw-r--r-- | solenv/gbuild/platform/macosx.mk | 3 |
2 files changed, 53 insertions, 0 deletions
diff --git a/solenv/bin/lldb-core-bt.sh b/solenv/bin/lldb-core-bt.sh new file mode 100755 index 000000000000..2bd982ec21e9 --- /dev/null +++ b/solenv/bin/lldb-core-bt.sh @@ -0,0 +1,50 @@ +#!/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 lldb)" +then + found= + for COREFILE in "$COREDIR"/core* + do + if [ -f "$COREFILE" ] + then + printf '\nIt looks like %s generated %s\nBacktraces:\n' \ + "$EXECUTABLE" "$COREFILE" + $LLDBCOMMANDFILE=$(mktemp) + guess=$(file "$COREFILE") + guess=${guess#* execfn: \'} + guess=${guess%%\'*} + if [ ! -x "$guess" ]; then guess=$EXECUTABLE; fi + printf "target create -c $COREFILE $guess\nthread backtrace all\nquit\n" >"$LLDBCOMMANDFILE" + lldb -s "$LLDBCOMMANDFILE" --batch \ + && found=x + rm "$LLDBCOMMANDFILE" + 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 lldb in your path to show backtraces" + exit 1 +fi diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk index c743511207ce..f9a805b6b62e 100644 --- a/solenv/gbuild/platform/macosx.mk +++ b/solenv/gbuild/platform/macosx.mk @@ -266,7 +266,10 @@ gb_CppunitTest_malloc_check := MallocScribble=1 MallocPreScribble=1 define gb_CppunitTest_CppunitTest_platform $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_LinkTarget_get_target,$(2)) : LAYER := NONE +endef +define gb_CppunitTest_postprocess +$(SRCDIR)/solenv/bin/lldb-core-bt.sh $(1) $(2) $(3) endef # JunitTest class |