Fix breakpoints

This commit is contained in:
2025-03-10 09:38:03 +01:00
parent c39b54d0d7
commit 31f6fa1cc1
3 changed files with 8 additions and 17 deletions

View File

@@ -145,7 +145,6 @@ typedef struct {
js_State *js;
HashTable brks;
uintptr_t program_load_offset;
bool running;
} Dbg;
void dbg_wait(Dbg *dbg)
@@ -229,16 +228,10 @@ void dbg_step_brk(Dbg *dbg)
if ((brk != NULL && brk->enabled)) {
uint64_t prev_instr = loc;
dbg_set_rip(dbg, prev_instr);
brk->enabled = false;
brk_disable(brk);
ptrace(PTRACE_SINGLESTEP, brk->pid, NULL, NULL);
dbg_wait(dbg);
brk->enabled = true;
} else {
if (!dbg->running) {
dbg->running = true;
} else {
LOG_ERR("Breakpoint 0x%"PRIxPTR" either doesn't exist or is disabled\n", loc);
}
brk_enable(brk);
}
}
@@ -274,11 +267,6 @@ void dbg_js_rm_brk_addr(js_State *js)
{
Dbg *dbg = getdbg();
const char *addr_str = js_tostring(js, 1);
/* uintptr_t addr; */
/* sscanf(addr_str, "0x%"SCNxPTR, &addr); */
/* uintptr_t full_addr = dbg->program_load_offset + addr; */
/* char addr_str2[20]; */
/* snprintf(addr_str2, sizeof(addr_str2), "0x%"PRIxPTR, full_addr); */
Brk *brk = (Brk *)hashtable_get(&dbg->brks, addr_str);
if (brk == NULL) {
LOG_ERR("No breakpoint at address: %s\n", addr_str);
@@ -448,8 +436,8 @@ void dbg_init_load_offset(Dbg *dbg)
}
// We only need the first one
procmaps_struct *mem_region = pmparser_next(&maps_iter);
procmaps_struct *mem_region = NULL;
mem_region = pmparser_next(&maps_iter);
dbg->program_load_offset = (uintptr_t)mem_region->addr_start;
pmparser_free(&maps_iter);