mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 22:08:41 +00:00
properly parameterize viz block & viz row building paths based on dbgi table target
This commit is contained in:
@@ -110,6 +110,47 @@ dbgi_fuzzy_item_num_from_array_element_idx__linear_search(DBGI_FuzzySearchItemAr
|
|||||||
return fuzzy_item_num;
|
return fuzzy_item_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBG_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx)
|
||||||
|
{
|
||||||
|
String8 result = {0};
|
||||||
|
switch(target)
|
||||||
|
{
|
||||||
|
// NOTE(rjf): no default - warn if we miss a case
|
||||||
|
case DBGI_FuzzySearchTarget_Procedures:
|
||||||
|
{
|
||||||
|
RADDBG_Procedure *proc = raddbg_element_from_idx(rdbg, procedures, element_idx);
|
||||||
|
U64 name_size = 0;
|
||||||
|
U8 *name_base = raddbg_string_from_idx(rdbg, proc->name_string_idx, &name_size);
|
||||||
|
result = str8(name_base, name_size);
|
||||||
|
}break;
|
||||||
|
case DBGI_FuzzySearchTarget_GlobalVariables:
|
||||||
|
{
|
||||||
|
RADDBG_GlobalVariable *gvar = raddbg_element_from_idx(rdbg, global_variables, element_idx);
|
||||||
|
U64 name_size = 0;
|
||||||
|
U8 *name_base = raddbg_string_from_idx(rdbg, gvar->name_string_idx, &name_size);
|
||||||
|
result = str8(name_base, name_size);
|
||||||
|
}break;
|
||||||
|
case DBGI_FuzzySearchTarget_ThreadVariables:
|
||||||
|
{
|
||||||
|
RADDBG_ThreadVariable *tvar = raddbg_element_from_idx(rdbg, thread_variables, element_idx);
|
||||||
|
U64 name_size = 0;
|
||||||
|
U8 *name_base = raddbg_string_from_idx(rdbg, tvar->name_string_idx, &name_size);
|
||||||
|
result = str8(name_base, name_size);
|
||||||
|
}break;
|
||||||
|
case DBGI_FuzzySearchTarget_UDTs:
|
||||||
|
{
|
||||||
|
RADDBG_UDT *udt = raddbg_element_from_idx(rdbg, udts, element_idx);
|
||||||
|
RADDBG_TypeNode *type_node = raddbg_element_from_idx(rdbg, type_nodes, udt->self_type_idx);
|
||||||
|
U64 name_size = 0;
|
||||||
|
U8 *name_base = raddbg_string_from_idx(rdbg, type_node->user_defined.name_string_idx, &name_size);
|
||||||
|
result = str8(name_base, name_size);
|
||||||
|
}break;
|
||||||
|
case DBGI_FuzzySearchTarget_COUNT:{}break;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Forced Override Cache Functions
|
//~ rjf: Forced Override Cache Functions
|
||||||
|
|
||||||
|
|||||||
@@ -379,6 +379,7 @@ internal void dbgi_ensure_tctx_inited(void);
|
|||||||
|
|
||||||
internal U64 dbgi_hash_from_string(String8 string);
|
internal U64 dbgi_hash_from_string(String8 string);
|
||||||
internal U64 dbgi_fuzzy_item_num_from_array_element_idx__linear_search(DBGI_FuzzySearchItemArray *array, U64 element_idx);
|
internal U64 dbgi_fuzzy_item_num_from_array_element_idx__linear_search(DBGI_FuzzySearchItemArray *array, U64 element_idx);
|
||||||
|
internal String8 dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBG_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx);
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Forced Override Cache Functions
|
//~ rjf: Forced Override Cache Functions
|
||||||
|
|||||||
@@ -721,6 +721,7 @@ struct DF_EvalVizBlock
|
|||||||
// rjf: info about ranges that this block spans
|
// rjf: info about ranges that this block spans
|
||||||
Rng1U64 visual_idx_range;
|
Rng1U64 visual_idx_range;
|
||||||
Rng1U64 semantic_idx_range;
|
Rng1U64 semantic_idx_range;
|
||||||
|
DBGI_FuzzySearchTarget dbgi_target;
|
||||||
DBGI_FuzzySearchItemArray backing_search_items;
|
DBGI_FuzzySearchItemArray backing_search_items;
|
||||||
|
|
||||||
// rjf: visualization config extensions
|
// rjf: visualization config extensions
|
||||||
|
|||||||
+2
-6
@@ -7529,12 +7529,8 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
DF_Entity *module = df_module_from_process_vaddr(process, thread_rip_unwind_vaddr);
|
DF_Entity *module = df_module_from_process_vaddr(process, thread_rip_unwind_vaddr);
|
||||||
for(U64 idx = visible_idx_range.min; idx < visible_idx_range.max; idx += 1)
|
for(U64 idx = visible_idx_range.min; idx < visible_idx_range.max; idx += 1)
|
||||||
{
|
{
|
||||||
// rjf: unpack type info
|
// rjf: unpack info about this row
|
||||||
RADDBG_UDT *udt = raddbg_element_from_idx(parse_ctx->rdbg, udts, block->backing_search_items.v[idx].idx);
|
String8 name = dbgi_fuzzy_item_string_from_rdbg_target_element_idx(parse_ctx->rdbg, block->dbgi_target, block->backing_search_items.v[idx].idx);
|
||||||
RADDBG_TypeNode *type_node = raddbg_element_from_idx(parse_ctx->rdbg, type_nodes, udt->self_type_idx);
|
|
||||||
U64 name_size = 0;
|
|
||||||
U8 *name_base = raddbg_string_from_idx(parse_ctx->rdbg, type_node->user_defined.name_string_idx, &name_size);
|
|
||||||
String8 name = str8(name_base, name_size);
|
|
||||||
|
|
||||||
// rjf: get keys for this row
|
// rjf: get keys for this row
|
||||||
DF_ExpandKey parent_key = block->parent_key;
|
DF_ExpandKey parent_key = block->parent_key;
|
||||||
|
|||||||
@@ -641,6 +641,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF
|
|||||||
DF_EvalViewKey eval_view_key = df_eval_view_key_from_eval_watch_view(ews);
|
DF_EvalViewKey eval_view_key = df_eval_view_key_from_eval_watch_view(ews);
|
||||||
DF_EvalView *eval_view = df_eval_view_from_key(eval_view_key);
|
DF_EvalView *eval_view = df_eval_view_from_key(eval_view_key);
|
||||||
String8 filter = str8(view->query_buffer, view->query_string_size);
|
String8 filter = str8(view->query_buffer, view->query_string_size);
|
||||||
|
DBGI_FuzzySearchTarget dbgi_target = DBGI_FuzzySearchTarget_UDTs;
|
||||||
switch(ews->fill_kind)
|
switch(ews->fill_kind)
|
||||||
{
|
{
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
@@ -717,9 +718,10 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF
|
|||||||
////////////////////////////
|
////////////////////////////
|
||||||
//- rjf: debug info table fill -> build split debug info table blocks
|
//- rjf: debug info table fill -> build split debug info table blocks
|
||||||
//
|
//
|
||||||
case DF_EvalWatchViewFillKind_Globals:
|
case DF_EvalWatchViewFillKind_Globals: dbgi_target = DBGI_FuzzySearchTarget_GlobalVariables; goto dbgi_table;
|
||||||
case DF_EvalWatchViewFillKind_ThreadLocals:
|
case DF_EvalWatchViewFillKind_ThreadLocals: dbgi_target = DBGI_FuzzySearchTarget_ThreadVariables; goto dbgi_table;
|
||||||
case DF_EvalWatchViewFillKind_Types:
|
case DF_EvalWatchViewFillKind_Types: dbgi_target = DBGI_FuzzySearchTarget_UDTs; goto dbgi_table;
|
||||||
|
dbgi_table:;
|
||||||
{
|
{
|
||||||
//- rjf: unpack context
|
//- rjf: unpack context
|
||||||
DF_Entity *thread = df_entity_from_handle(ctrl_ctx->thread);
|
DF_Entity *thread = df_entity_from_handle(ctrl_ctx->thread);
|
||||||
@@ -740,7 +742,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF
|
|||||||
//- rjf: query all filtered items from dbgi searching system
|
//- rjf: query all filtered items from dbgi searching system
|
||||||
U128 fuzzy_search_key = {(U64)view, df_hash_from_string(str8_struct(&view))};
|
U128 fuzzy_search_key = {(U64)view, df_hash_from_string(str8_struct(&view))};
|
||||||
B32 items_stale = 0;
|
B32 items_stale = 0;
|
||||||
DBGI_FuzzySearchItemArray items = dbgi_fuzzy_search_items_from_key_exe_query(scope, fuzzy_search_key, exe_path, filter, DBGI_FuzzySearchTarget_UDTs, os_now_microseconds()+100, &items_stale);
|
DBGI_FuzzySearchItemArray items = dbgi_fuzzy_search_items_from_key_exe_query(scope, fuzzy_search_key, exe_path, filter, dbgi_target, os_now_microseconds()+100, &items_stale);
|
||||||
if(items_stale)
|
if(items_stale)
|
||||||
{
|
{
|
||||||
df_gfx_request_frame();
|
df_gfx_request_frame();
|
||||||
@@ -811,6 +813,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF
|
|||||||
DF_EvalVizBlock *last_vb = df_eval_viz_block_begin(arena, DF_EvalVizBlockKind_DebugInfoTable, parent_key, root_key, 0);
|
DF_EvalVizBlock *last_vb = df_eval_viz_block_begin(arena, DF_EvalVizBlockKind_DebugInfoTable, parent_key, root_key, 0);
|
||||||
{
|
{
|
||||||
last_vb->visual_idx_range = last_vb->semantic_idx_range = r1u64(0, items.count);
|
last_vb->visual_idx_range = last_vb->semantic_idx_range = r1u64(0, items.count);
|
||||||
|
last_vb->dbgi_target = dbgi_target;
|
||||||
last_vb->backing_search_items = items;
|
last_vb->backing_search_items = items;
|
||||||
}
|
}
|
||||||
for(U64 sub_expand_idx = 0; sub_expand_idx < sub_expand_keys_count; sub_expand_idx += 1)
|
for(U64 sub_expand_idx = 0; sub_expand_idx < sub_expand_keys_count; sub_expand_idx += 1)
|
||||||
@@ -819,11 +822,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF
|
|||||||
last_vb = df_eval_viz_block_split_and_continue(arena, &blocks, last_vb, sub_expand_item_idxs[sub_expand_idx]);
|
last_vb = df_eval_viz_block_split_and_continue(arena, &blocks, last_vb, sub_expand_item_idxs[sub_expand_idx]);
|
||||||
|
|
||||||
// rjf: grab name for the expanded row
|
// rjf: grab name for the expanded row
|
||||||
RADDBG_UDT *udt = raddbg_element_from_idx(parse_ctx->rdbg, udts, sub_expand_keys[sub_expand_idx].child_num);
|
String8 name = dbgi_fuzzy_item_string_from_rdbg_target_element_idx(&dbgi->rdbg, dbgi_target, sub_expand_keys[sub_expand_idx].child_num);
|
||||||
RADDBG_TypeNode *type_node = raddbg_element_from_idx(parse_ctx->rdbg, type_nodes, udt->self_type_idx);
|
|
||||||
U64 name_size = 0;
|
|
||||||
U8 *name_base = raddbg_string_from_idx(parse_ctx->rdbg, type_node->user_defined.name_string_idx, &name_size);
|
|
||||||
String8 name = str8(name_base, name_size);
|
|
||||||
|
|
||||||
// rjf: recurse for sub-expansion
|
// rjf: recurse for sub-expansion
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user