Use the Debugger wrapper for hardware breakpoints
masterThe Debugger wrapper class simplifies hardware breakpoint management by handling register selection and event listening automatically.
Key Advantages:
- No need to manually pick a hardware register (
DR0-DR3). - No need to pass the
sizeparameter for strings (the wrapper attempts to read the string to determine size). - Debug events are handled via standard event listeners.
setHardwareBreakpointreturns the specific register used for the breakpoint.
Trigger Types:
memoryjs.TRIGGER_ACCESS: Breakpoint occurs when the address is accessed.memoryjs.TRIGGER_WRITE: Breakpoint occurs when the address is written to.
const hardwareDebugger = memoryjs.Debugger;
// 1. Attach
hardwareDebugger.attach(processId);
// 2. Set breakpoint
const address = 0xDEADBEEF;
const trigger = memoryjs.TRIGGER_ACCESS;
const dataType = memoryjs.INT;
const register = hardwareDebugger.setHardwareBreakpoint(processId, address, trigger, dataType);
// 3. Listen for events
hardwareDebugger.on('debugEvent', ({ register, event }) => {
console.log(`Hardware Register ${register} breakpoint`);
console.log(event);
});
// Or listen to a specific register returned by setHardwareBreakpoint
hardwareDebugger.on(register, (event) => {
console.log(event);
});