I would like to use this stacktrace method #4 implementation upon assertion failure.
So if there are no signals triggered, could you suggest a way to detect an assertion failure before the executable exits?
I would like to use this stacktrace method #4 implementation upon assertion failure.
So if there are no signals triggered, could you suggest a way to detect an assertion failure before the executable exits?
On Linux, an assert
failure (if not disabled with -DNDEBUG
) is doing (from /usr/include/assert.h
)
# define assert(expr) \
((expr) \
? __ASSERT_VOID_CAST (0) \
: __assert_fail (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION))
and the internal __assert_fail
routine is calling abort
, which sends a SIGABRT
to the process, which you might catch if you really wanted to.
But a simpler way is to have your own "assert"-like macro. This is what many free software (GTK with g_assert
, GCC with gcc_assert
, ...) are actually doing.