Skip to content

Commit 0fc8275

Browse files
committed
Add C++ api wrappers for the conditional breakpoint functions
1 parent bb134a0 commit 0fc8275

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

api/debuggerapi.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,10 @@ namespace BinaryNinjaDebuggerAPI {
726726
void DisableBreakpoint(const ModuleNameAndOffset& breakpoint);
727727
bool ContainsBreakpoint(uint64_t address);
728728
bool ContainsBreakpoint(const ModuleNameAndOffset& breakpoint);
729+
bool SetBreakpointCondition(uint64_t address, const std::string& condition);
730+
bool SetBreakpointCondition(const ModuleNameAndOffset& address, const std::string& condition);
731+
std::string GetBreakpointCondition(uint64_t address);
732+
std::string GetBreakpointCondition(const ModuleNameAndOffset& address);
729733

730734
uint64_t IP();
731735
uint64_t GetLastIP();

api/debuggercontroller.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,36 @@ bool DebuggerController::ContainsBreakpoint(const ModuleNameAndOffset& breakpoin
799799
}
800800

801801

802+
bool DebuggerController::SetBreakpointCondition(uint64_t address, const std::string& condition)
803+
{
804+
return BNDebuggerSetBreakpointConditionAbsolute(m_object, address, condition.c_str());
805+
}
806+
807+
808+
bool DebuggerController::SetBreakpointCondition(const ModuleNameAndOffset& address, const std::string& condition)
809+
{
810+
return BNDebuggerSetBreakpointConditionRelative(m_object, address.module.c_str(), address.offset, condition.c_str());
811+
}
812+
813+
814+
std::string DebuggerController::GetBreakpointCondition(uint64_t address)
815+
{
816+
char* condition = BNDebuggerGetBreakpointConditionAbsolute(m_object, address);
817+
std::string result = condition ? condition : "";
818+
BNDebuggerFreeString(condition);
819+
return result;
820+
}
821+
822+
823+
std::string DebuggerController::GetBreakpointCondition(const ModuleNameAndOffset& address)
824+
{
825+
char* condition = BNDebuggerGetBreakpointConditionRelative(m_object, address.module.c_str(), address.offset);
826+
std::string result = condition ? condition : "";
827+
BNDebuggerFreeString(condition);
828+
return result;
829+
}
830+
831+
802832
uint64_t DebuggerController::RelativeAddressToAbsolute(const ModuleNameAndOffset& address)
803833
{
804834
return BNDebuggerRelativeAddressToAbsolute(m_object, address.module.c_str(), address.offset);

0 commit comments

Comments
 (0)