[Libreoffice-commits] core.git: solenv/bin solenv/gbuild

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Wed Jun 3 12:09:10 UTC 2020


 solenv/bin/lldb-core-bt.sh       |   50 +++++++++++++++++++++++++++++++++++++++
 solenv/gbuild/platform/macosx.mk |    3 ++
 2 files changed, 53 insertions(+)

New commits:
commit 756c027198adc5212d46d72e0628c90698652af5
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Wed Jun 3 08:55:32 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Jun 3 14:08:37 2020 +0200

    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 at collabora.co.uk>

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


More information about the Libreoffice-commits mailing list