Fix breakpoints
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
log_inf("Loading user init script for program ./test");
|
||||
log_err("Test error message");
|
||||
|
||||
var offset = "0x0000000000001145"; // objdump -d ./test
|
||||
var offset = "0x0000000000001169"; // dupa(), objdump -d ./test
|
||||
|
||||
// Testing...
|
||||
print_file();
|
||||
|
||||
20
debugus.c
20
debugus.c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user