diff --git a/deps/imgui b/deps/imgui index 3418d50..ebb8d78 160000 --- a/deps/imgui +++ b/deps/imgui @@ -1 +1 @@ -Subproject commit 3418d509490c0f1dd4bc6c3ba2a9312e8efc0ff9 +Subproject commit ebb8d781020a77d1d5185009e208068e3bf8753b diff --git a/src/backend/lldb/lldb_backend.cpp b/src/backend/lldb/lldb_backend.cpp index d672288..b4b99e4 100644 --- a/src/backend/lldb/lldb_backend.cpp +++ b/src/backend/lldb/lldb_backend.cpp @@ -73,6 +73,9 @@ void LLDBBackend::start() if (!bp.IsValid()) { spdlog::warn("Failed to create breakpoint for main"); + } else + { + _hidden_main_bp = bp.GetID(); } } @@ -157,6 +160,11 @@ void LLDBBackend::handle_state_change(lldb::StateType state) this->check_frame_changes(); this->check_data_changes(); + if (!_stop_at_entry) + { + _target.BreakpointDelete(_hidden_main_bp); + } + if (state == StateType::eStateStopped) { _state = TargetState::paused; diff --git a/src/backend/lldb/lldb_backend.h b/src/backend/lldb/lldb_backend.h index 5401f46..5125071 100644 --- a/src/backend/lldb/lldb_backend.h +++ b/src/backend/lldb/lldb_backend.h @@ -161,8 +161,9 @@ namespace dbgui::backend std::thread _msg_thread; // process state - bool _first_run = true; - bool _stop_at_entry = false; + bool _first_run = true; + bool _stop_at_entry = false; + lldb::break_id_t _hidden_main_bp; TargetState _state = TargetState::stopped; std::vector _reg_sets = {}; std::vector _threads = {}; diff --git a/tmp/main b/tmp/main index b08b16b..6506200 100755 Binary files a/tmp/main and b/tmp/main differ