DebugInfoWidget.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include "Debugger.h"
  8. #include <AK/NonnullOwnPtr.h>
  9. #include <LibGUI/Action.h>
  10. #include <LibGUI/ListView.h>
  11. #include <LibGUI/Menu.h>
  12. #include <LibGUI/Model.h>
  13. #include <LibGUI/TableView.h>
  14. #include <LibGUI/Toolbar.h>
  15. #include <LibGUI/ToolbarContainer.h>
  16. #include <LibGUI/TreeView.h>
  17. #include <LibGUI/Widget.h>
  18. #include <sys/arch/i386/regs.h>
  19. namespace HackStudio {
  20. class DebugInfoWidget final : public GUI::Widget {
  21. C_OBJECT(DebugInfoWidget)
  22. public:
  23. virtual ~DebugInfoWidget() override { }
  24. void update_state(Debug::ProcessInspector const&, PtraceRegisters const&);
  25. void program_stopped();
  26. void set_debug_actions_enabled(bool enabled);
  27. private:
  28. explicit DebugInfoWidget();
  29. void init_toolbar();
  30. NonnullRefPtr<GUI::Widget> build_variables_tab();
  31. NonnullRefPtr<GUI::Widget> build_registers_tab();
  32. bool does_variable_support_writing(const Debug::DebugInfo::VariableInfo*);
  33. RefPtr<GUI::Menu> get_context_menu_for_variable(const GUI::ModelIndex&);
  34. RefPtr<GUI::TreeView> m_variables_view;
  35. RefPtr<GUI::TableView> m_registers_view;
  36. RefPtr<GUI::ListView> m_backtrace_view;
  37. RefPtr<GUI::Menu> m_variable_context_menu;
  38. RefPtr<GUI::Toolbar> m_toolbar;
  39. RefPtr<GUI::Action> m_continue_action;
  40. RefPtr<GUI::Action> m_singlestep_action;
  41. RefPtr<GUI::Action> m_step_in_action;
  42. RefPtr<GUI::Action> m_step_out_action;
  43. };
  44. }