observable.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* GDB Notifications to Observers.
  2. Copyright (C) 2003-2022 Free Software Foundation, Inc.
  3. This file is part of GDB.
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  14. #include "defs.h"
  15. #include "observable.h"
  16. #include "command.h"
  17. #include "gdbcmd.h"
  18. namespace gdb
  19. {
  20. namespace observers
  21. {
  22. bool observer_debug = false;
  23. #define DEFINE_OBSERVABLE(name) decltype (name) name (# name)
  24. DEFINE_OBSERVABLE (normal_stop);
  25. DEFINE_OBSERVABLE (signal_received);
  26. DEFINE_OBSERVABLE (end_stepping_range);
  27. DEFINE_OBSERVABLE (signal_exited);
  28. DEFINE_OBSERVABLE (exited);
  29. DEFINE_OBSERVABLE (no_history);
  30. DEFINE_OBSERVABLE (sync_execution_done);
  31. DEFINE_OBSERVABLE (command_error);
  32. DEFINE_OBSERVABLE (target_changed);
  33. DEFINE_OBSERVABLE (executable_changed);
  34. DEFINE_OBSERVABLE (inferior_created);
  35. DEFINE_OBSERVABLE (inferior_execd);
  36. DEFINE_OBSERVABLE (record_changed);
  37. DEFINE_OBSERVABLE (solib_loaded);
  38. DEFINE_OBSERVABLE (solib_unloaded);
  39. DEFINE_OBSERVABLE (new_objfile);
  40. DEFINE_OBSERVABLE (free_objfile);
  41. DEFINE_OBSERVABLE (new_thread);
  42. DEFINE_OBSERVABLE (thread_exit);
  43. DEFINE_OBSERVABLE (thread_stop_requested);
  44. DEFINE_OBSERVABLE (target_resumed);
  45. DEFINE_OBSERVABLE (about_to_proceed);
  46. DEFINE_OBSERVABLE (breakpoint_created);
  47. DEFINE_OBSERVABLE (breakpoint_deleted);
  48. DEFINE_OBSERVABLE (breakpoint_modified);
  49. DEFINE_OBSERVABLE (traceframe_changed);
  50. DEFINE_OBSERVABLE (architecture_changed);
  51. DEFINE_OBSERVABLE (thread_ptid_changed);
  52. DEFINE_OBSERVABLE (inferior_added);
  53. DEFINE_OBSERVABLE (inferior_appeared);
  54. DEFINE_OBSERVABLE (inferior_exit);
  55. DEFINE_OBSERVABLE (inferior_removed);
  56. DEFINE_OBSERVABLE (memory_changed);
  57. DEFINE_OBSERVABLE (before_prompt);
  58. DEFINE_OBSERVABLE (gdb_datadir_changed);
  59. DEFINE_OBSERVABLE (command_param_changed);
  60. DEFINE_OBSERVABLE (tsv_created);
  61. DEFINE_OBSERVABLE (tsv_deleted);
  62. DEFINE_OBSERVABLE (tsv_modified);
  63. DEFINE_OBSERVABLE (inferior_call_pre);
  64. DEFINE_OBSERVABLE (inferior_call_post);
  65. DEFINE_OBSERVABLE (register_changed);
  66. DEFINE_OBSERVABLE (user_selected_context_changed);
  67. DEFINE_OBSERVABLE (styling_changed);
  68. DEFINE_OBSERVABLE (current_source_symtab_and_line_changed);
  69. DEFINE_OBSERVABLE (gdb_exiting);
  70. DEFINE_OBSERVABLE (connection_removed);
  71. DEFINE_OBSERVABLE (target_pre_wait);
  72. DEFINE_OBSERVABLE (target_post_wait);
  73. } /* namespace observers */
  74. } /* namespace gdb */
  75. static void
  76. show_observer_debug (struct ui_file *file, int from_tty,
  77. struct cmd_list_element *c, const char *value)
  78. {
  79. gdb_printf (file, _("Observer debugging is %s.\n"), value);
  80. }
  81. void _initialize_observer ();
  82. void
  83. _initialize_observer ()
  84. {
  85. add_setshow_boolean_cmd ("observer", class_maintenance,
  86. &gdb::observers::observer_debug, _("\
  87. Set observer debugging."), _("\
  88. Show observer debugging."), _("\
  89. When non-zero, observer debugging is enabled."),
  90. NULL,
  91. show_observer_debug,
  92. &setdebuglist, &showdebuglist);
  93. }