gdbstub: manage CPUs as threads (Jan Kiszka)

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
3 files changed
tree: b1cb44dc6e93f2b9664305a6732221661bcf50bc
  1. audio/
  2. bsd-user/
  3. darwin-user/
  4. fpu/
  5. gdb-xml/
  6. hw/
  7. keymaps/
  8. linux-user/
  9. pc-bios/
  10. slirp/
  11. target-alpha/
  12. target-arm/
  13. target-cris/
  14. target-i386/
  15. target-m68k/
  16. target-mips/
  17. target-ppc/
  18. target-sh4/
  19. target-sparc/
  20. tcg/
  21. tests/
  22. .gitignore
  23. a.out.h
  24. aes.c
  25. aes.h
  26. aio.c
  27. alpha-dis.c
  28. alpha.ld
  29. arm-dis.c
  30. arm-semi.c
  31. arm.ld
  32. block-bochs.c
  33. block-cloop.c
  34. block-cow.c
  35. block-dmg.c
  36. block-nbd.c
  37. block-parallels.c
  38. block-qcow.c
  39. block-qcow2.c
  40. block-raw-posix.c
  41. block-raw-win32.c
  42. block-vmdk.c
  43. block-vpc.c
  44. block-vvfat.c
  45. block.c
  46. block.h
  47. block_int.h
  48. bswap.h
  49. bt-host.c
  50. bt-vhci.c
  51. buffered_file.c
  52. buffered_file.h
  53. Changelog
  54. check_ops.sh
  55. cocoa.m
  56. configure
  57. console.c
  58. console.h
  59. COPYING
  60. COPYING.LIB
  61. cpu-all.h
  62. cpu-defs.h
  63. cpu-exec.c
  64. cris-dis.c
  65. curses.c
  66. curses_keys.h
  67. cutils.c
  68. d3des.c
  69. d3des.h
  70. def-helper.h
  71. dis-asm.h
  72. disas.c
  73. disas.h
  74. dyngen-exec.h
  75. dyngen.c
  76. elf.h
  77. elf_ops.h
  78. exec-all.h
  79. exec.c
  80. feature_to_c.sh
  81. gdbstub.c
  82. gdbstub.h
  83. gen-icount.h
  84. host-utils.c
  85. host-utils.h
  86. hostregs_helper.h
  87. hpet.h
  88. hppa-dis.c
  89. hppa.ld
  90. i386-dis.c
  91. i386.ld
  92. ia64.ld
  93. keymaps.c
  94. kqemu.c
  95. kqemu.h
  96. kvm-all.c
  97. kvm.h
  98. LICENSE
  99. loader.c
  100. m68k-dis.c
  101. m68k-semi.c
  102. m68k.ld
  103. MAINTAINERS
  104. Makefile
  105. Makefile.target
  106. migration-exec.c
  107. migration-tcp.c
  108. migration.c
  109. migration.h
  110. mips-dis.c
  111. mips.ld
  112. mipsel.ld
  113. monitor.c
  114. nbd.c
  115. nbd.h
  116. net-checksum.c
  117. net.c
  118. net.h
  119. osdep.c
  120. osdep.h
  121. ppc-dis.c
  122. ppc.ld
  123. ppc64.ld
  124. qemu-aio.h
  125. qemu-binfmt-conf.sh
  126. qemu-char.c
  127. qemu-char.h
  128. qemu-common.h
  129. qemu-doc.texi
  130. qemu-img.c
  131. qemu-img.texi
  132. qemu-lock.h
  133. qemu-log.h
  134. qemu-malloc.c
  135. qemu-nbd.c
  136. qemu-nbd.texi
  137. qemu-sockets.c
  138. qemu-tech.texi
  139. qemu-timer.h
  140. qemu-tool.c
  141. qemu_socket.h
  142. readline.c
  143. README
  144. s390-dis.c
  145. s390.ld
  146. savevm.c
  147. sdl.c
  148. sdl_keysym.h
  149. sh4-dis.c
  150. softmmu-semi.h
  151. softmmu_defs.h
  152. softmmu_exec.h
  153. softmmu_header.h
  154. softmmu_template.h
  155. sparc-dis.c
  156. sparc.ld
  157. sparc64.ld
  158. sys-queue.h
  159. sysemu.h
  160. tap-win32.c
  161. texi2pod.pl
  162. thunk.c
  163. thunk.h
  164. TODO
  165. translate-all.c
  166. uboot_image.h
  167. usb-linux.c
  168. VERSION
  169. vgafont.h
  170. vl.c
  171. vnc.c
  172. vnc_keysym.h
  173. vnchextile.h
  174. x86_64.ld
  175. x_keymap.c