diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index dae9b8da..1a62a527 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -12142,6 +12142,7 @@ rd_frame(void) CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint")); for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } CFG_Node *hit_count = cfg_node_child_from_string_or_alloc(rd_state->cfg, n->v, str8_lit("hit_count")); cfg_node_new_replace(rd_state->cfg, hit_count, str8_lit("0")); } @@ -15110,6 +15111,7 @@ rd_frame(void) CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint")); for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } CFG_Node *bp = n->v; CFG_Node *cnd = cfg_node_child_from_string(bp, str8_lit("condition")); RD_Location loc = rd_location_from_cfg(bp); @@ -15127,8 +15129,10 @@ rd_frame(void) } if(!already_exists) { - CFG_Node *project = cfg_node_child_from_string(cfg_node_root(), str8_lit("project")); - CFG_Node *bp = cfg_node_new(rd_state->cfg, project, str8_lit("breakpoint")); + CFG_Node *user = cfg_node_child_from_string(cfg_node_root(), str8_lit("user")); + CFG_Node *bp = cfg_node_new(rd_state->cfg, user, str8_lit("breakpoint")); + CFG_Node *project = cfg_node_new(rd_state->cfg, bp, str8_lit("project")); + cfg_node_new(rd_state->cfg, project, rd_state->project_path); rd_cmd(RD_CmdKind_RelocateCfg, .cfg = bp->id); if(rd_regs()->do_lister && !rd_regs()->non_graphical) { @@ -15151,6 +15155,7 @@ rd_frame(void) CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint")); for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } cfg_node_release(rd_state->cfg, n->v); } }break; @@ -15159,6 +15164,7 @@ rd_frame(void) CFG_NodePtrList list = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint")); for(CFG_NodePtrNode *n = list.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } String8 string = cfg_string_from_tree(rd_state->cmd_output_arena, rd_state->cfg_schema_table, str8_zero(), n->v); str8_list_push(rd_state->cmd_output_arena, &rd_state->cmd_outputs, string); } @@ -16156,6 +16162,7 @@ rd_frame(void) U64 idx = 0; for(CFG_NodePtrNode *n = bp_cfgs.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } CFG_Node *src_bp = n->v; B32 src_bp_is_disabled = rd_disabled_from_cfg(src_bp); if(src_bp_is_disabled) diff --git a/src/raddbg/raddbg_main.c b/src/raddbg/raddbg_main.c index 83200210..5ccb838f 100644 --- a/src/raddbg/raddbg_main.c +++ b/src/raddbg/raddbg_main.c @@ -4,6 +4,9 @@ //////////////////////////////// //~ rjf: post-0.9.26 TODO notes // +// [ ] single-line bad address visualization +// [ ] memory view show unmapped memory as non-zeros +// // [ ] "autos" collection, which can be evaluated // [ ] show "autos" inline in source code near thread? // [ ] memory_size(...) view for quickly evaluating memory sizes diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index eb1834f3..69b380df 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -255,6 +255,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint")); for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } CFG_Node *bp = n->v; RD_Location loc = rd_location_from_cfg(bp); if(visible_line_num_range.min <= loc.pt.line && loc.pt.line <= visible_line_num_range.max) @@ -379,6 +380,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint")); for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next) { + if(rd_cfg_is_project_filtered(n->v)){ continue; } CFG_Node *bp = n->v; RD_Location loc = rd_location_from_cfg(bp); E_Value loc_value = e_value_from_string(loc.expr);