mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-04-12 03:37:56 +02:00
cmake: add SDLTEST_GDB option to run tests under gdb debugger printing stacktraces
This commit is contained in:
committed by
Anonymous Maarten
parent
9d97e663d9
commit
396eeff350
@@ -54,6 +54,12 @@ if(WIN32)
|
||||
else()
|
||||
set_property(TARGET sdlprocdump PROPERTY EXCLUDE_FROM_ALL "1")
|
||||
endif()
|
||||
else()
|
||||
option(SDLTEST_GDB "Run tests using headless gdb" OFF)
|
||||
find_program(GDB_BIN NAMES "gdb")
|
||||
if(SDLTEST_GDB AND GDB_BIN)
|
||||
set(CMAKE_TEST_LAUNCHER "${GDB_BIN};-batch;-nx;-x;${CMAKE_CURRENT_SOURCE_DIR}/unix/gdbcmds.txt;--args")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
|
||||
36
test/unix/gdbcmds.txt
Normal file
36
test/unix/gdbcmds.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
# Script to run a headless gdb printing a stacktrace on a fatal signal
|
||||
# Use it as: `gdb -batch -nx -x gdbcmds.txt --args $PROGRAM_AND_ARGS`
|
||||
# Configure CMake with -DSDLTEST_GDB=ON to use with within CTest.
|
||||
|
||||
set pagination off
|
||||
set confirm off
|
||||
set verbose off
|
||||
|
||||
# Only stop on real crash signals
|
||||
handle SIGSEGV stop print nopass
|
||||
handle SIGABRT stop print nopass
|
||||
handle SIGILL stop print nopass
|
||||
handle SIGFPE stop print nopass
|
||||
handle SIGBUS stop print nopass
|
||||
|
||||
# Ignore SIGPIPE and SIGTERM signals
|
||||
# (SIGTERM is used by testthread)
|
||||
handle SIGPIPE nostop noprint pass
|
||||
handle SIGTERM nostop noprint pass
|
||||
|
||||
define hook-stop
|
||||
if !$_isvoid($_siginfo)
|
||||
printf "\n=== Crash detected (signal %d) ===\n", $_siginfo.si_signo
|
||||
bt full
|
||||
quit 1
|
||||
end
|
||||
end
|
||||
|
||||
run
|
||||
|
||||
# Normal exit path
|
||||
if !$_isvoid($_exitcode)
|
||||
quit $_exitcode
|
||||
end
|
||||
|
||||
quit 0
|
||||
Reference in New Issue
Block a user