Add exception filename to title bar

Add the exception filename after the line number and change the
line number so it is in that file. It used to always be code.py.

Fixes #6702
This commit is contained in:
Scott Shawcroft 2022-08-08 13:52:05 -07:00
parent f1826b054a
commit 86f4014f83
No known key found for this signature in database
GPG Key ID: 0DFD512649C052DA
3 changed files with 8 additions and 2 deletions

3
main.c
View File

@ -213,8 +213,9 @@ void supervisor_execution_status(void) {
if (_current_executing_filename != NULL) { if (_current_executing_filename != NULL) {
serial_write(_current_executing_filename); serial_write(_current_executing_filename);
} else if ((_exec_result.return_code & PYEXEC_EXCEPTION) != 0 && } else if ((_exec_result.return_code & PYEXEC_EXCEPTION) != 0 &&
_exec_result.exception_line > 0 &&
exception != NULL) { exception != NULL) {
mp_printf(&mp_plat_print, "@%d %q", _exec_result.exception_line, exception->base.type->name); mp_printf(&mp_plat_print, "@%d %s %q", _exec_result.exception_line, _exec_result.exception_filename, exception->base.type->name);
} else { } else {
serial_write_compressed(translate("Done")); serial_write_compressed(translate("Done"));
} }

View File

@ -199,7 +199,9 @@ STATIC int parse_compile_execute(const void *source, mp_parse_input_kind_t input
size_t n, *values; size_t n, *values;
mp_obj_exception_get_traceback(return_value, &n, &values); mp_obj_exception_get_traceback(return_value, &n, &values);
if (values != NULL) { if (values != NULL) {
result->exception_line = values[n - 2]; result->exception_line = values[1];
result->exception_filename[sizeof(result->exception_filename) - 1] = '\0';
strncpy(result->exception_filename, qstr_str(values[0]), sizeof(result->exception_filename) - 1);
} }
} }
} }

View File

@ -37,6 +37,9 @@ typedef struct {
int return_code; int return_code;
mp_obj_t exception; mp_obj_t exception;
int exception_line; int exception_line;
// Only store the first 32 characters of the filename. It is very unlikely that they can all be
// seen.
char exception_filename[33];
} pyexec_result_t; } pyexec_result_t;
extern pyexec_mode_kind_t pyexec_mode_kind; extern pyexec_mode_kind_t pyexec_mode_kind;