diff --git a/debugus.c b/debugus.c index a1f6714..dce4bbc 100644 --- a/debugus.c +++ b/debugus.c @@ -632,6 +632,34 @@ void dbg_js_help(js_State *js) js_pushundefined(js); } +void dbg_js_ebaddr(js_State *js) +{ + Dbg *dbg = getdbg(); + const char *addr_str = js_tostring(js, 1); + Brk *brk = (Brk *)hashtable_get(&dbg->brks, addr_str); + if (brk == NULL) { + LOG_ERR("No breakpoint at address: %s\n", addr_str); + goto done; + } + brk_enable(brk); +done: + js_pushundefined(js); +} + +void dbg_js_dbaddr(js_State *js) +{ + Dbg *dbg = getdbg(); + const char *addr_str = js_tostring(js, 1); + Brk *brk = (Brk *)hashtable_get(&dbg->brks, addr_str); + if (brk == NULL) { + LOG_ERR("No breakpoint at address: %s\n", addr_str); + goto done; + } + brk_disable(brk); +done: + js_pushundefined(js); +} + void dbg_init_js(Dbg *dbg) { dbg->js = js_newstate(NULL, NULL, JS_STRICT); @@ -662,6 +690,8 @@ void dbg_init_js(Dbg *dbg) make_js_func(lsf, 0, "List functions in executable, ARGS=None"); make_js_func(bfn, 1, "Set breakpoint at function, ARGS=Function name:string"); make_js_func(rmbfn, 1, "Remove breakpoint at function, ARGS=Function name:string"); + make_js_func(ebaddr, 1, "Enable breakpoint at address, ARGS=Address:hex string"); + make_js_func(dbaddr, 1, "Disable breakpoint at address, ARGS=Address:hex string"); #undef make_js_func }