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 <target> invoke-event <event-name> 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 <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5049 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
parent
74cd25a4d3
commit
b3ce5a0ae5
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue