log: Add a new debug level (4) for verbose I/O debug
Change ftdi SWD driver and CMSIS-DAP to use it instead of LOG_DEBUG(). Change-Id: I17ba3de2086c7159209db61fba3faf067dfc5023 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/3805 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
committed by
Spencer Oliver
parent
04b23ef502
commit
3ee81fd787
@@ -50,11 +50,12 @@ static int64_t current_time;
|
||||
|
||||
static int64_t start;
|
||||
|
||||
static const char * const log_strings[5] = {
|
||||
static const char * const log_strings[6] = {
|
||||
"User : ",
|
||||
"Error: ",
|
||||
"Warn : ", /* want a space after each colon, all same width, colons aligned */
|
||||
"Info : ",
|
||||
"Debug: ",
|
||||
"Debug: "
|
||||
};
|
||||
|
||||
@@ -234,8 +235,8 @@ COMMAND_HANDLER(handle_debug_level_command)
|
||||
if (CMD_ARGC == 1) {
|
||||
int new_level;
|
||||
COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], new_level);
|
||||
if ((new_level > LOG_LVL_DEBUG) || (new_level < LOG_LVL_SILENT)) {
|
||||
LOG_ERROR("level must be between %d and %d", LOG_LVL_SILENT, LOG_LVL_DEBUG);
|
||||
if ((new_level > LOG_LVL_DEBUG_IO) || (new_level < LOG_LVL_SILENT)) {
|
||||
LOG_ERROR("level must be between %d and %d", LOG_LVL_SILENT, LOG_LVL_DEBUG_IO);
|
||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||
}
|
||||
debug_level = new_level;
|
||||
@@ -279,7 +280,8 @@ static struct command_registration log_command_handlers[] = {
|
||||
.mode = COMMAND_ANY,
|
||||
.help = "Sets the verbosity level of debugging output. "
|
||||
"0 shows errors only; 1 adds warnings; "
|
||||
"2 (default) adds other info; 3 adds debugging.",
|
||||
"2 (default) adds other info; 3 adds debugging; "
|
||||
"4 adds extra verbose debugging.",
|
||||
.usage = "number",
|
||||
},
|
||||
COMMAND_REGISTRATION_DONE
|
||||
@@ -303,7 +305,7 @@ void log_init(void)
|
||||
int retval = parse_int(debug_env, &value);
|
||||
if (ERROR_OK == retval &&
|
||||
debug_level >= LOG_LVL_SILENT &&
|
||||
debug_level <= LOG_LVL_DEBUG)
|
||||
debug_level <= LOG_LVL_DEBUG_IO)
|
||||
debug_level = value;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
* LOG_LVL_WARNING - non-fatal errors, that may be resolved later
|
||||
* LOG_LVL_INFO - state information, etc.
|
||||
* LOG_LVL_DEBUG - debug statements, execution trace
|
||||
* LOG_LVL_DEBUG_IO - verbose debug, low-level I/O trace
|
||||
*/
|
||||
enum log_levels {
|
||||
LOG_LVL_SILENT = -3,
|
||||
@@ -54,7 +55,8 @@ enum log_levels {
|
||||
LOG_LVL_ERROR = 0,
|
||||
LOG_LVL_WARNING = 1,
|
||||
LOG_LVL_INFO = 2,
|
||||
LOG_LVL_DEBUG = 3
|
||||
LOG_LVL_DEBUG = 3,
|
||||
LOG_LVL_DEBUG_IO = 4,
|
||||
};
|
||||
|
||||
void log_printf(enum log_levels level, const char *file, unsigned line,
|
||||
@@ -102,6 +104,14 @@ extern int debug_level;
|
||||
|
||||
#define LOG_LEVEL_IS(FOO) ((debug_level) >= (FOO))
|
||||
|
||||
#define LOG_DEBUG_IO(expr ...) \
|
||||
do { \
|
||||
if (debug_level >= LOG_LVL_DEBUG_IO) \
|
||||
log_printf_lf(LOG_LVL_DEBUG, \
|
||||
__FILE__, __LINE__, __func__, \
|
||||
expr); \
|
||||
} while (0)
|
||||
|
||||
#define LOG_DEBUG(expr ...) \
|
||||
do { \
|
||||
if (debug_level >= LOG_LVL_DEBUG) \
|
||||
|
||||
Reference in New Issue
Block a user