aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vrbka <marek.vrbka@codasip.com>2023-05-29 14:41:34 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2023-06-10 17:00:26 +0000
commit0854c83076749196603bebdb47ec93f50a454f79 (patch)
treea0bce81fa851c5ecf280d0057043289458b1b9c5
parent370bf43fb1a89d4bf3887cba63318e5e1711478b (diff)
downloadriscv-openocd-0854c83076749196603bebdb47ec93f50a454f79.zip
riscv-openocd-0854c83076749196603bebdb47ec93f50a454f79.tar.gz
riscv-openocd-0854c83076749196603bebdb47ec93f50a454f79.tar.bz2
gdb_server: add debug signal reason prints
Added debug prints to show what is the target debug reason. Also added debug print for Ctrl-C response. This is useful for troubleshooting and log analysis. Change-Id: I055936257d989efe7255656198a8d73a367fcd15 Signed-off-by: Marek Vrbka <marek.vrbka@codasip.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7720 Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Tested-by: jenkins
-rw-r--r--src/server/gdb_server.c9
-rw-r--r--src/target/target.c26
-rw-r--r--src/target/target.h2
3 files changed, 35 insertions, 2 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 943fe40..0baf755 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -145,6 +145,9 @@ static char gdb_running_type;
static int gdb_last_signal(struct target *target)
{
+ LOG_TARGET_DEBUG(target, "Debug reason is: %s",
+ target_debug_reason_str(target->debug_reason));
+
switch (target->debug_reason) {
case DBG_REASON_DBGRQ:
return 0x2; /* SIGINT */
@@ -159,8 +162,9 @@ static int gdb_last_signal(struct target *target)
case DBG_REASON_NOTHALTED:
return 0x0; /* no signal... shouldn't happen */
default:
- LOG_USER("undefined debug reason %d - target needs reset",
- target->debug_reason);
+ LOG_USER("undefined debug reason %d (%s) - target needs reset",
+ target->debug_reason,
+ target_debug_reason_str(target->debug_reason));
return 0x0;
}
}
@@ -798,6 +802,7 @@ static void gdb_signal_reply(struct target *target, struct connection *connectio
}
if (gdb_connection->ctrl_c) {
+ LOG_TARGET_DEBUG(target, "Responding with signal 2 (SIGINT) to debugger due to Ctrl-C");
signal_var = 0x2;
} else
signal_var = gdb_last_signal(ct);
diff --git a/src/target/target.c b/src/target/target.c
index 0099292..5858aa5 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -7147,3 +7147,29 @@ static int target_register_user_commands(struct command_context *cmd_ctx)
return register_commands(cmd_ctx, NULL, target_exec_command_handlers);
}
+
+const char *target_debug_reason_str(enum target_debug_reason reason)
+{
+ switch (reason) {
+ case DBG_REASON_DBGRQ:
+ return "DBGRQ";
+ case DBG_REASON_BREAKPOINT:
+ return "BREAKPOINT";
+ case DBG_REASON_WATCHPOINT:
+ return "WATCHPOINT";
+ case DBG_REASON_WPTANDBKPT:
+ return "WPTANDBKPT";
+ case DBG_REASON_SINGLESTEP:
+ return "SINGLESTEP";
+ case DBG_REASON_NOTHALTED:
+ return "NOTHALTED";
+ case DBG_REASON_EXIT:
+ return "EXIT";
+ case DBG_REASON_EXC_CATCH:
+ return "EXC_CATCH";
+ case DBG_REASON_UNDEFINED:
+ return "UNDEFINED";
+ default:
+ return "UNKNOWN!";
+ }
+}
diff --git a/src/target/target.h b/src/target/target.h
index 2a2f531..abeb8ed 100644
--- a/src/target/target.h
+++ b/src/target/target.h
@@ -803,4 +803,6 @@ extern bool get_target_reset_nag(void);
#define TARGET_DEFAULT_POLLING_INTERVAL 100
+const char *target_debug_reason_str(enum target_debug_reason reason);
+
#endif /* OPENOCD_TARGET_TARGET_H */