Implement proc_remove_breakpoint
diff --git a/breakpoints.c b/breakpoints.c
index 07430af..36f5e72 100644
--- a/breakpoints.c
+++ b/breakpoints.c
@@ -228,15 +228,13 @@
void
delete_breakpoint(Process *proc, void *addr)
{
- struct breakpoint *sbp;
-
debug(DEBUG_FUNCTION, "delete_breakpoint(pid=%d, addr=%p)", proc->pid, addr);
Process * leader = proc->leader;
assert(leader != NULL);
- sbp = dict_find_entry(leader->breakpoints, addr);
- assert(sbp); /* FIXME: remove after debugging has been done. */
+ struct breakpoint *sbp = dict_find_entry(leader->breakpoints, addr);
+ assert(sbp != NULL);
/* This should only happen on out-of-memory conditions. */
if (sbp == NULL)
return;
@@ -246,6 +244,11 @@
breakpoint_name(sbp), sbp->addr);
return;
}
+ if (sbp->enabled == 0) {
+ proc_remove_breakpoint(leader, sbp);
+ breakpoint_destroy(sbp);
+ free(sbp);
+ }
}
const char *