improve error messages a little bit.

git-svn-id: svn://svn.berlios.de/openocd/trunk@781 b42882b7-edfa-0310-969c-e2dbd0fdcd60
__archive__
oharboe 2008-07-09 22:19:05 +00:00
parent 0edbe9145c
commit 92beb99bf7
2 changed files with 16 additions and 26 deletions

View File

@ -8245,10 +8245,10 @@ int Jim_EvalObjVector(Jim_Interp *interp, int objc, Jim_Obj *const *objv)
retcode = cmdPtr->cmdProc(interp, objc, objv); retcode = cmdPtr->cmdProc(interp, objc, objv);
} else { } else {
retcode = JimCallProcedure(interp, cmdPtr, objc, objv); retcode = JimCallProcedure(interp, cmdPtr, objc, objv);
if (retcode == JIM_ERR) { if (retcode == JIM_ERR) {
JimAppendStackTrace(interp, JimAppendStackTrace(interp,
Jim_GetString(objv[0], NULL), "?", 1); Jim_GetString(objv[0], NULL), "?", 1);
} }
} }
} }
/* Decr refcount of arguments and return the retcode */ /* Decr refcount of arguments and return the retcode */
@ -8540,6 +8540,11 @@ int Jim_EvalObj(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
} else { } else {
/* Call [unknown] */ /* Call [unknown] */
retcode = JimUnknown(interp, argc, argv); retcode = JimUnknown(interp, argc, argv);
if (retcode == JIM_ERR) {
JimAppendStackTrace(interp,
Jim_GetString(argv[0], NULL), script->fileName,
token[i-argc*2].linenr);
}
} }
if (retcode != JIM_OK) { if (retcode != JIM_OK) {
i -= argc*2; /* point to the command name. */ i -= argc*2; /* point to the command name. */

View File

@ -357,35 +357,20 @@ int jim_command(command_context_t *context, char *line)
int retval=ERROR_OK; int retval=ERROR_OK;
int retcode=Jim_Eval(interp, line); int retcode=Jim_Eval(interp, line);
const char *result;
int reslen;
result = Jim_GetString(Jim_GetResult(interp), &reslen);
if (retcode == JIM_ERR) { if (retcode == JIM_ERR) {
int len, i; Jim_PrintErrorMessage(interp);
LOG_USER_N("Runtime error, file \"%s\", line %d:" JIM_NL, interp->errorFileName, interp->errorLine);
LOG_USER_N(" %s" JIM_NL,
Jim_GetString(interp->result, NULL));
Jim_ListLength(interp, interp->stackTrace, &len);
for (i = 0; i < len; i += 3) {
Jim_Obj *objPtr;
const char *proc, *file, *line;
Jim_ListIndex(interp, interp->stackTrace, i, &objPtr, JIM_NONE);
proc = Jim_GetString(objPtr, NULL);
Jim_ListIndex(interp, interp->stackTrace, i+1, &objPtr, JIM_NONE);
file = Jim_GetString(objPtr, NULL);
Jim_ListIndex(interp, interp->stackTrace, i+2, &objPtr, JIM_NONE);
line = Jim_GetString(objPtr, NULL);
LOG_USER_N("In procedure '%s' called at file \"%s\", line %s" JIM_NL, proc, file, line);
}
long t; long t;
if (Jim_GetLong(interp, Jim_GetVariableStr(interp, "openocd_result", JIM_ERRMSG), &t)==JIM_OK) if (Jim_GetLong(interp, Jim_GetVariableStr(interp, "openocd_result", JIM_ERRMSG), &t)==JIM_OK)
{ {
return t; return t;
} }
return ERROR_FAIL; return ERROR_FAIL;
} else if (retcode == JIM_EXIT) { }
const char *result;
int reslen;
result = Jim_GetString(Jim_GetResult(interp), &reslen);
if (retcode == JIM_EXIT) {
/* ignore. */ /* ignore. */
/* exit(Jim_GetExitCode(interp)); */ /* exit(Jim_GetExitCode(interp)); */
} else { } else {