From: Antonio Borneo Date: Mon, 1 Apr 2019 08:34:25 +0000 (+0200) Subject: target: use LOG_USER to print errors in events X-Git-Tag: v0.11.0-rc1~714 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=b3ce5a0ae5453a879a36856b5d8453722ba0f9b5 target: use LOG_USER to print errors in events Events are supposed to be executed asynchronously and not linked with any command, so it's incorrect printing out an eventual error using command_print(). Even in the case of events triggered by the command invoke-event the eventual error in the event handler is not propagated to the command, so the command_print() is still not appropriate. Replace command_print() with LOG_USER() in target_handle_event(). Add further info in the log to identify which event has generated the error and its associated target. Before return, clean-up the error message and the stacktrace from the error already displayed, to avoid propagate them. Change-Id: I5966aa25e7c81348f4ad4d6e7ce5d4dee44ea4c8 Signed-off-by: Antonio Borneo Reviewed-on: http://openocd.zylin.com/5049 Tested-by: jenkins Reviewed-by: Tomas Vanek --- diff --git a/src/target/target.c b/src/target/target.c index 28e67bf754..14b6b0b99e 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -4553,7 +4553,12 @@ void target_handle_event(struct target *target, enum target_event e) if (Jim_EvalObj(teap->interp, teap->body) != JIM_OK) { Jim_MakeErrorMessage(teap->interp); - command_print(NULL, "%s\n", Jim_GetString(Jim_GetResult(teap->interp), NULL)); + LOG_USER("Error executing event %s on target %s:\n%s", + Jim_Nvp_value2name_simple(nvp_target_event, e)->name, + target_name(target), + Jim_GetString(Jim_GetResult(teap->interp), NULL)); + /* clean both error code and stacktrace before return */ + Jim_Eval(teap->interp, "error \"\" \"\""); } cmd_ctx->current_target_override = saved_target_override;