mirror of
https://github.com/qemu/qemu.git
synced 2024-11-27 13:53:45 +08:00
880a757838
This patch enhances QEMU's built-in debugger for SMP guest debugging. Using the thread support of the gdb remote protocol, each VCPU is mapped on a pseudo thread and exposed to the gdb frontend. This way you can easy switch the focus of gdb between the VCPUs and observe their states. On breakpoint hit, the focus is automatically adjusted just as for normal multi-threaded application under gdb control. Furthermore, the patch propagates breakpoint and watchpoint insertions or removals to all CPUs, not just the current one as it was the case so far. Without this, SMP guest debugging was practically unfeasible. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5743 c046a42c-6fe2-441c-8c8c-71466251a162
26 lines
841 B
C
26 lines
841 B
C
#ifndef GDBSTUB_H
|
|
#define GDBSTUB_H
|
|
|
|
#define DEFAULT_GDBSTUB_PORT "1234"
|
|
|
|
typedef void (*gdb_syscall_complete_cb)(CPUState *env,
|
|
target_ulong ret, target_ulong err);
|
|
|
|
void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...);
|
|
int use_gdb_syscalls(void);
|
|
void gdb_set_stop_cpu(CPUState *env);
|
|
#ifdef CONFIG_USER_ONLY
|
|
int gdb_handlesig (CPUState *, int);
|
|
void gdb_exit(CPUState *, int);
|
|
int gdbserver_start(int);
|
|
#else
|
|
int gdbserver_start(const char *port);
|
|
#endif
|
|
/* Get or set a register. Returns the size of the register. */
|
|
typedef int (*gdb_reg_cb)(CPUState *env, uint8_t *buf, int reg);
|
|
void gdb_register_coprocessor(CPUState *env,
|
|
gdb_reg_cb get_reg, gdb_reg_cb set_reg,
|
|
int num_regs, const char *xml, int g_pos);
|
|
|
|
#endif
|