From 42100ac963a5de424a1407885599f049335036f9 Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 29 Nov 2024 21:32:31 +0100 Subject: feat: breakpoint conditions and skip counts --- src/ui/ui.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'src/ui/ui.cpp') diff --git a/src/ui/ui.cpp b/src/ui/ui.cpp index 9abb872..7c0970a 100644 --- a/src/ui/ui.cpp +++ b/src/ui/ui.cpp @@ -512,12 +512,14 @@ namespace Hsdbg ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_ScrollY; - if (ImGui::BeginTable("##breakpoints", 6, flags)) + if (ImGui::BeginTable("##breakpoints", 8, flags)) { ImGui::TableSetupColumn("on", ImGuiTableColumnFlags_WidthFixed, 26.0f); ImGui::TableSetupColumn("id", ImGuiTableColumnFlags_WidthFixed, 30.0f); ImGui::TableSetupColumn("location"); ImGui::TableSetupColumn("address"); + ImGui::TableSetupColumn("condition"); + ImGui::TableSetupColumn("skip", ImGuiTableColumnFlags_WidthFixed, 50.0f); ImGui::TableSetupColumn("hits", ImGuiTableColumnFlags_WidthFixed, 40.0f); ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 26.0f); ImGui::TableSetupScrollFreeze(0, 1); @@ -566,6 +568,29 @@ namespace Hsdbg ImGui::TextDisabled("pending"); } + ImGui::TableNextColumn(); + std::string condition = breakpoint.condition; + ImGui::SetNextItemWidth(-1.0f); + + if (ImGui::InputTextWithHint("##condition", + "stop when", + &condition, + ImGuiInputTextFlags_EnterReturnsTrue)) + { + debugger.set_breakpoint_condition(breakpoint.id, condition); + } + + ImGui::TableNextColumn(); + int ignore_count = static_cast(breakpoint.ignore_count); + ImGui::SetNextItemWidth(-1.0f); + + if (ImGui::InputInt("##skip", &ignore_count, 0, 0, + ImGuiInputTextFlags_EnterReturnsTrue)) + { + debugger.set_breakpoint_ignore_count(breakpoint.id, + static_cast(std::max(ignore_count, 0))); + } + ImGui::TableNextColumn(); ImGui::Text("%u", breakpoint.hit_count); -- cgit v1.3