From fc91110918e948b006fdd18d9851a95c00fc95c3 Mon Sep 17 00:00:00 2001 From: Christoph Lipka Date: Thu, 2 Feb 2017 15:04:24 +0900 Subject: CMake Option: Trigger segmentation fault in case of FATAL log When the user library receives a log with log level DLT_LOG_FATAL it triggers a segmentation fault to provide information to the developer via tools like coredump. Signed-off-by: Christoph Lipka --- src/lib/dlt_user.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 0b00070..713bea3 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -63,6 +63,18 @@ #include "dlt_user_shared_cfg.h" #include "dlt_user_cfg.h" +#ifdef DLT_FATAL_LOG_RESET_ENABLE +#define DLT_LOG_FATAL_RESET_TRAP(LOGLEVEL) \ + do { \ + if (LOGLEVEL == DLT_LOG_FATAL) { \ + int *p = NULL; \ + *p = 0; \ + } \ + } while(0) +#else /* DLT_FATAL_LOG_RESET_ENABLE */ +#define DLT_LOG_FATAL_RESET_TRAP(LOGLEVEL) +#endif /* DLT_FATAL_LOG_RESET_ENABLE */ + static DltUser dlt_user; static bool dlt_user_initialised = false; static int dlt_user_freeing = 0; @@ -1420,6 +1432,8 @@ inline DltReturnValue dlt_user_log_write_start(DltContext *handle, DltContextDat DltReturnValue dlt_user_log_write_start_id(DltContext *handle, DltContextData *log, DltLogLevelType loglevel, uint32_t messageid) { + DLT_LOG_FATAL_RESET_TRAP(loglevel); + // check nullpointer if (handle == NULL || log == NULL) return DLT_RETURN_WRONG_PARAMETER; -- cgit v1.2.1