diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-07-29 20:50:33 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-07-29 20:50:33 +0000 |
commit | c33a346edff5910dddeea84792b73cb117518911 (patch) | |
tree | fc171ac6837d43fbb8ee9b984f2bebf907e45f0e /gdbstub.c | |
parent | 61a2ad53cb6337eb2c535984f65f1cb531ccc452 (diff) |
first part of single stepping support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@342 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'gdbstub.c')
-rw-r--r-- | gdbstub.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -324,6 +324,24 @@ int cpu_gdbstub(void *opaque, int (*main_loop)(void *opaque), int port) snprintf(buf, sizeof(buf), "S%02x", ret); put_packet(buf); break; + case 's': + env = cpu_gdbstub_get_env(opaque); + if (*p != '\0') { + addr = strtoul(p, (char **)&p, 16); +#if defined(TARGET_I386) + env->eip = addr; +#endif + } + cpu_single_step(env, 1); + ret = main_loop(opaque); + cpu_single_step(env, 0); + if (ret == EXCP_DEBUG) + ret = SIGTRAP; + else + ret = 0; + snprintf(buf, sizeof(buf), "S%02x", ret); + put_packet(buf); + break; case 'g': env = cpu_gdbstub_get_env(opaque); registers = (void *)mem_buf; |