* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#ifndef BREAKPOINT_MANAGER_H
#define BREAKPOINT_MANAGER_H
#include <Locker.h>
#include "Breakpoint.h"
class DebuggerInterface;
class Team;
class BreakpointManager {
public:
BreakpointManager(Team* team,
DebuggerInterface* debuggerInterface);
~BreakpointManager();
status_t Init();
status_t InstallUserBreakpoint(
UserBreakpoint* userBreakpoint,
bool enabled);
void UninstallUserBreakpoint(
UserBreakpoint* userBreakpoint);
status_t InstallTemporaryBreakpoint(
target_addr_t address,
BreakpointClient* client);
void UninstallTemporaryBreakpoint(
target_addr_t address,
BreakpointClient* client);
void UpdateImageBreakpoints(Image* image);
void RemoveImageBreakpoints(Image* image);
private:
void _UpdateImageBreakpoints(Image* image,
bool removeOnly);
status_t _UpdateBreakpointInstallation(
Breakpoint* breakpoint);
private:
BLocker fLock;
Team* fTeam;
DebuggerInterface* fDebuggerInterface;
};
#endif