diff options
author | Christoph Lipka <clipka@jp.adit-jv.com> | 2017-02-02 15:04:24 +0900 |
---|---|---|
committer | Christoph Lipka <clipka@jp.adit-jv.com> | 2017-02-02 15:04:24 +0900 |
commit | fc91110918e948b006fdd18d9851a95c00fc95c3 (patch) | |
tree | 7d396bfaf8516cb69b2eeec37338c59d40eb9363 /src | |
parent | a961dba0013ed2119aa719546c63212459753549 (diff) | |
download | DLT-daemon-fc91110918e948b006fdd18d9851a95c00fc95c3.tar.gz |
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 <clipka@jp.adit-jv.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/dlt_user.c | 14 |
1 files changed, 14 insertions, 0 deletions
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; |