ebfn()/dbfn() commands for enabling/disabling breakpoints by func name
This commit is contained in:
54
debugus.c
54
debugus.c
@@ -660,6 +660,58 @@ done:
|
|||||||
js_pushundefined(js);
|
js_pushundefined(js);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dbg_js_ebfn(js_State *js)
|
||||||
|
{
|
||||||
|
Dbg *dbg = getdbg();
|
||||||
|
const char *fn_name = js_tostring(js, 1);
|
||||||
|
|
||||||
|
for (int i = 0; i < dbg->funcs.count; i++) {
|
||||||
|
Func *f = &dbg->funcs.items[i];
|
||||||
|
if (strcmp(fn_name, f->name) == 0) {
|
||||||
|
char addr_str2[20];
|
||||||
|
snprintf(addr_str2, sizeof(addr_str2), "0x%"PRIxPTR,
|
||||||
|
libelfin_wrap_func_addr(dbg->plibelfin, f));
|
||||||
|
|
||||||
|
Brk *brk = (Brk *)hashtable_get(&dbg->brks, addr_str2);
|
||||||
|
if (brk == NULL) {
|
||||||
|
LOG_ERR("No breakpoint at function: %s\n", fn_name);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
brk_enable(brk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
js_pushundefined(js);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dbg_js_dbfn(js_State *js)
|
||||||
|
{
|
||||||
|
Dbg *dbg = getdbg();
|
||||||
|
const char *fn_name = js_tostring(js, 1);
|
||||||
|
|
||||||
|
for (int i = 0; i < dbg->funcs.count; i++) {
|
||||||
|
Func *f = &dbg->funcs.items[i];
|
||||||
|
if (strcmp(fn_name, f->name) == 0) {
|
||||||
|
char addr_str2[20];
|
||||||
|
snprintf(addr_str2, sizeof(addr_str2), "0x%"PRIxPTR,
|
||||||
|
libelfin_wrap_func_addr(dbg->plibelfin, f));
|
||||||
|
|
||||||
|
Brk *brk = (Brk *)hashtable_get(&dbg->brks, addr_str2);
|
||||||
|
if (brk == NULL) {
|
||||||
|
LOG_ERR("No breakpoint at function: %s\n", fn_name);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
brk_disable(brk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
js_pushundefined(js);
|
||||||
|
}
|
||||||
|
|
||||||
void dbg_init_js(Dbg *dbg)
|
void dbg_init_js(Dbg *dbg)
|
||||||
{
|
{
|
||||||
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
|
dbg->js = js_newstate(NULL, NULL, JS_STRICT);
|
||||||
@@ -692,6 +744,8 @@ void dbg_init_js(Dbg *dbg)
|
|||||||
make_js_func(rmbfn, 1, "Remove 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(ebaddr, 1, "Enable breakpoint at address, ARGS=Address:hex string");
|
||||||
make_js_func(dbaddr, 1, "Disable breakpoint at address, ARGS=Address:hex string");
|
make_js_func(dbaddr, 1, "Disable breakpoint at address, ARGS=Address:hex string");
|
||||||
|
make_js_func(ebfn, 1, "Enable breakpoint at function, ARGS=Function name:string");
|
||||||
|
make_js_func(dbfn, 1, "Disable breakpoint at function, ARGS=Function name:string");
|
||||||
|
|
||||||
#undef make_js_func
|
#undef make_js_func
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user