/* * Copyright (c) 2020, Itamar S. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "Debugger.h" #include #include #include #include #include #include #include #include #include #include #include namespace HackStudio { class DebugInfoWidget final : public GUI::Widget { C_OBJECT(DebugInfoWidget) public: static ErrorOr> create(); virtual ~DebugInfoWidget() override { } void update_state(Debug::ProcessInspector&, PtraceRegisters const&); void program_stopped(); enum class DebugActionsState { DebuggeeRunning, DebuggeeStopped, }; void set_debug_actions_enabled(bool enabled, Optional); Function on_backtrace_frame_selection; private: explicit DebugInfoWidget(); ErrorOr init_toolbar(); NonnullRefPtr build_variables_tab(); NonnullRefPtr build_registers_tab(); bool does_variable_support_writing(Debug::DebugInfo::VariableInfo const*); RefPtr get_context_menu_for_variable(const GUI::ModelIndex&); RefPtr m_variables_view; RefPtr m_registers_view; RefPtr m_backtrace_view; RefPtr m_variable_context_menu; RefPtr m_toolbar; RefPtr m_continue_action; RefPtr m_singlestep_action; RefPtr m_step_in_action; RefPtr m_step_out_action; RefPtr m_pause_action; }; }