From 7c439b2356b4021429a4365c014c8e128744db10 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 22 Jun 2009 21:44:09 +0000 Subject: [PATCH] Added {Install,Uninstall}Breakpoint(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31188 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../debugger_interface/DebuggerInterface.cpp | 29 +++++++++++++++++++ .../debugger_interface/DebuggerInterface.h | 3 ++ 2 files changed, 32 insertions(+) diff --git a/src/apps/debugger/debugger_interface/DebuggerInterface.cpp b/src/apps/debugger/debugger_interface/DebuggerInterface.cpp index 7a7b6689d8..4a0b8cd635 100644 --- a/src/apps/debugger/debugger_interface/DebuggerInterface.cpp +++ b/src/apps/debugger/debugger_interface/DebuggerInterface.cpp @@ -363,6 +363,35 @@ DebuggerInterface::SingleStepThread(thread_id thread) } +status_t +DebuggerInterface::InstallBreakpoint(target_addr_t address) +{ + DebugContextGetter contextGetter(fDebugContextPool); + + debug_nub_set_breakpoint message; + message.reply_port = contextGetter.Context()->reply_port; + message.address = (void*)(addr_t)address; + + debug_nub_set_breakpoint_reply reply; + + status_t error = send_debug_message(contextGetter.Context(), + B_DEBUG_MESSAGE_SET_BREAKPOINT, &message, sizeof(message), &reply, + sizeof(reply)); + return error == B_OK ? reply.error : error; +} + + +status_t +DebuggerInterface::UninstallBreakpoint(target_addr_t address) +{ + debug_nub_clear_breakpoint message; + message.address = (void*)(addr_t)address; + + return write_port(fNubPort, B_DEBUG_MESSAGE_CLEAR_BREAKPOINT, + &message, sizeof(message)); +} + + status_t DebuggerInterface::GetThreadInfos(BObjectList& infos) { diff --git a/src/apps/debugger/debugger_interface/DebuggerInterface.h b/src/apps/debugger/debugger_interface/DebuggerInterface.h index ab0e1bc978..c5f65d6268 100644 --- a/src/apps/debugger/debugger_interface/DebuggerInterface.h +++ b/src/apps/debugger/debugger_interface/DebuggerInterface.h @@ -40,6 +40,9 @@ public: virtual status_t StopThread(thread_id thread); virtual status_t SingleStepThread(thread_id thread); + virtual status_t InstallBreakpoint(target_addr_t address); + virtual status_t UninstallBreakpoint(target_addr_t address); + virtual status_t GetThreadInfos(BObjectList& infos); virtual status_t GetImageInfos(BObjectList& infos); virtual status_t GetSymbolInfos(team_id team, image_id image,