bfn() command for setting breakpoint by function name
This commit is contained in:
@@ -9,7 +9,8 @@ var offset = "0x0000000000001169"; // dupa(), objdump -d ./test
|
||||
// pf();
|
||||
// ppid();
|
||||
// pplo();
|
||||
baddr(offset);
|
||||
// baddr(offset);
|
||||
bfn("dupa");
|
||||
lsbrk();
|
||||
lsf();
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ var offset = "@DUPA_ADDR"; // dupa(), objdump -d ./test
|
||||
// pf();
|
||||
// ppid();
|
||||
// pplo();
|
||||
baddr(offset);
|
||||
// baddr(offset);
|
||||
bfn("dupa");
|
||||
lsbrk();
|
||||
lsf();
|
||||
|
||||
|
||||
20
debugus.c
20
debugus.c
@@ -338,7 +338,24 @@ void dbg_js_baddr(js_State *js)
|
||||
Brk brk = { .pid = dbg->pid, .addr = dbg->program_load_offset + addr };
|
||||
brk_enable(&brk);
|
||||
hashtable_set(&dbg->brks, addr_str2, &brk, sizeof(brk));
|
||||
done:
|
||||
js_pushundefined(js);
|
||||
}
|
||||
|
||||
void dbg_js_bfn(js_State *js)
|
||||
{
|
||||
Dbg *dbg = getdbg();
|
||||
const char *fn_name = js_tostring(js, 1);
|
||||
for (int i = 0; i < dbg->symbols.count; i++) {
|
||||
Symbol *s = &dbg->symbols.items[i];
|
||||
if (strcmp(fn_name, s->name) == 0) {
|
||||
uintptr_t addr = s->addr;
|
||||
char addr_str2[20];
|
||||
snprintf(addr_str2, sizeof(addr_str2), "0x%"PRIxPTR, addr);
|
||||
Brk brk = { .pid = dbg->pid, .addr = addr };
|
||||
brk_enable(&brk);
|
||||
hashtable_set(&dbg->brks, addr_str2, &brk, sizeof(brk));
|
||||
}
|
||||
}
|
||||
js_pushundefined(js);
|
||||
}
|
||||
|
||||
@@ -540,6 +557,7 @@ void dbg_init_js(Dbg *dbg)
|
||||
make_js_func(mwr, 2, "Write memory at address, ARGS=Address:hex string,Value:hex string");
|
||||
make_js_func(help, 0, "Print help information, ARGS=None");
|
||||
make_js_func(lsf, 0, "List functions in executable, ARGS=None");
|
||||
make_js_func(bfn, 1, "Set breakpoint at function, ARGS=Function name:string");
|
||||
|
||||
#undef make_js_func
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user