mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-12 23:31:38 -07:00
adjust pointer visualization; don't follow 0 pointers, go back to showing address first; adjust find-code-location snapping rule to only require a disasm snap / focus if no file location is specified
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ load_paths =
|
||||
commands =
|
||||
{
|
||||
//- rjf: fkey command slots (change locally but do not commit)
|
||||
.f1 = { .win = "build rdi_from_pdb rdi_dump tester telemetry && pushd build && tester && popd", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
.f1 = { .win = "build raddbg telemetry", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
.f2 = { .win = "build rdi_from_pdb", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
.f3 = { .win = "pushd build && raddbg.exe --user:local_dev.raddbg_user --project:local_dev.raddbg_project --xuto_run && popd",.linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
|
||||
|
||||
+53
-27
@@ -9488,11 +9488,29 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
||||
CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process);
|
||||
String8 symbol_name = d_symbol_name_from_process_vaddr(arena, process, value_eval.value.u64, 1);
|
||||
|
||||
// rjf: push pointer value
|
||||
B32 did_ptr_value = 0;
|
||||
if(!no_addr || value_eval.value.u64 == 0)
|
||||
{
|
||||
did_ptr_value = 1;
|
||||
String8 string = ev_string_from_simple_typed_eval(arena, flags, radix, min_digits, value_eval);
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, string).x;
|
||||
str8_list_push(arena, out, string);
|
||||
}
|
||||
|
||||
// rjf: special case: push strings for textual string content
|
||||
B32 did_arrow = 0;
|
||||
B32 did_content = 0;
|
||||
B32 did_string = 0;
|
||||
if(!did_content && ptee_has_string && !has_array)
|
||||
{
|
||||
if(did_ptr_value && !did_arrow)
|
||||
{
|
||||
did_arrow = 1;
|
||||
String8 arrow = str8_lit(" -> ");
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, arrow).x;
|
||||
str8_list_push(arena, out, arrow);
|
||||
}
|
||||
did_content = 1;
|
||||
did_string = 1;
|
||||
U64 string_memory_addr = value_eval.value.u64;
|
||||
@@ -9524,24 +9542,39 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
||||
}
|
||||
|
||||
// rjf: special case: push strings for symbols
|
||||
if(!did_content && symbol_name.size != 0 &&
|
||||
if(value_eval.value.u64 != 0 &&
|
||||
!did_content && symbol_name.size != 0 &&
|
||||
flags & EV_StringFlag_ReadOnlyDisplayRules &&
|
||||
((type_kind == E_TypeKind_Ptr && direct_type_kind == E_TypeKind_Void) ||
|
||||
(type_kind == E_TypeKind_Ptr && direct_type_kind == E_TypeKind_Function) ||
|
||||
(type_kind == E_TypeKind_Function)))
|
||||
{
|
||||
if(did_ptr_value && !did_arrow)
|
||||
{
|
||||
did_arrow = 1;
|
||||
String8 arrow = str8_lit(" -> ");
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, arrow).x;
|
||||
str8_list_push(arena, out, arrow);
|
||||
}
|
||||
did_content = 1;
|
||||
str8_list_push(arena, out, symbol_name);
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, symbol_name).x;
|
||||
}
|
||||
|
||||
// rjf: special case: need symbol name, don't have one
|
||||
if(!did_content && symbol_name.size == 0 &&
|
||||
if(value_eval.value.u64 != 0 &&
|
||||
!did_content && symbol_name.size == 0 &&
|
||||
flags & EV_StringFlag_ReadOnlyDisplayRules &&
|
||||
((type_kind == E_TypeKind_Ptr && direct_type_kind == E_TypeKind_Function) ||
|
||||
(type_kind == E_TypeKind_Function)) &&
|
||||
(flags & EV_StringFlag_ReadOnlyDisplayRules))
|
||||
{
|
||||
if(did_ptr_value)
|
||||
{
|
||||
String8 arrow = str8_lit(" -> ");
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, arrow).x;
|
||||
str8_list_push(arena, out, arrow);
|
||||
}
|
||||
did_content = 1;
|
||||
String8 string = str8_lit("???");
|
||||
str8_list_push(arena, out, string);
|
||||
@@ -9549,8 +9582,15 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
||||
}
|
||||
|
||||
// rjf: descend for all other cases
|
||||
if(!did_content && ptee_has_content && (flags & EV_StringFlag_ReadOnlyDisplayRules))
|
||||
if(value_eval.value.u64 != 0 && !did_content && ptee_has_content && (flags & EV_StringFlag_ReadOnlyDisplayRules))
|
||||
{
|
||||
if(did_ptr_value && !did_arrow)
|
||||
{
|
||||
did_arrow = 1;
|
||||
String8 arrow = str8_lit(" -> ");
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, arrow).x;
|
||||
str8_list_push(arena, out, arrow);
|
||||
}
|
||||
did_content = 1;
|
||||
if(depth < 4)
|
||||
{
|
||||
@@ -9565,28 +9605,6 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, ellipses).x;
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: push pointer value
|
||||
B32 did_ptr_value = 0;
|
||||
if((!no_addr || !did_content) && ((flags & EV_StringFlag_ReadOnlyDisplayRules) || !did_string))
|
||||
{
|
||||
did_ptr_value = 1;
|
||||
if(did_content)
|
||||
{
|
||||
String8 ptr_prefix = str8_lit(" (");
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, ptr_prefix).x;
|
||||
str8_list_push(arena, out, ptr_prefix);
|
||||
}
|
||||
String8 string = ev_string_from_simple_typed_eval(arena, flags, radix, min_digits, value_eval);
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, string).x;
|
||||
str8_list_push(arena, out, string);
|
||||
if(did_content)
|
||||
{
|
||||
String8 close = str8_lit(")");
|
||||
space_taken += fnt_dim_from_tag_size_string(font, font_size, 0, 0, close).x;
|
||||
str8_list_push(arena, out, close);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
|
||||
//- rjf: arrays
|
||||
@@ -14752,12 +14770,17 @@ rd_frame(void)
|
||||
CTRL_Entity *thread = &ctrl_entity_nil;
|
||||
CTRL_Entity *process = &ctrl_entity_nil;
|
||||
U64 vaddr = 0;
|
||||
B32 require_disasm_snap = 0;
|
||||
{
|
||||
file_path = rd_mapped_from_file_path(scratch.arena, rd_regs()->file_path);
|
||||
point = rd_regs()->cursor;
|
||||
thread = ctrl_entity_from_handle(d_state->ctrl_entity_store, rd_regs()->thread);
|
||||
process = ctrl_entity_from_handle(d_state->ctrl_entity_store, rd_regs()->process);
|
||||
vaddr = rd_regs()->vaddr;
|
||||
if(file_path.size == 0)
|
||||
{
|
||||
require_disasm_snap = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: given a src code location, if no vaddr is specified,
|
||||
@@ -14844,16 +14867,19 @@ rd_frame(void)
|
||||
Rng2F32 panel_rect = rd_target_rect_from_panel(root_rect, ws->root_panel, panel);
|
||||
Vec2F32 panel_rect_dim = dim_2f32(panel_rect);
|
||||
F32 panel_area = panel_rect_dim.x*panel_rect_dim.y;
|
||||
RD_View *panel_selected_tab = rd_selected_tab_from_panel(panel);
|
||||
for(RD_View *view = panel->first_tab_view; !rd_view_is_nil(view); view = view->order_next)
|
||||
{
|
||||
if(rd_view_is_project_filtered(view)) { continue; }
|
||||
RD_ViewRuleKind view_kind = rd_view_rule_kind_from_string(view->spec->string);
|
||||
if(view_kind == RD_ViewRuleKind_Disasm && view->query_string_size == 0 && panel_area > best_panel_area)
|
||||
B32 view_is_selected = (view == panel_selected_tab);
|
||||
if(view_kind == RD_ViewRuleKind_Disasm && view->query_string_size == 0 && panel_area > best_panel_area &&
|
||||
(view_is_selected || require_disasm_snap))
|
||||
{
|
||||
panel_w_disasm = panel;
|
||||
view_w_disasm = view;
|
||||
best_panel_area = panel_area;
|
||||
if(view == rd_selected_tab_from_panel(panel))
|
||||
if(view_is_selected)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
#include "codeview/codeview.h"
|
||||
#include "codeview/codeview_stringize.h"
|
||||
#include "msf/msf.h"
|
||||
#include "msf/msf_parse.h"
|
||||
#include "pdb/pdb.h"
|
||||
#include "pdb/pdb_parse.h"
|
||||
#include "pdb/pdb_stringize.h"
|
||||
|
||||
//- rjf: [c]
|
||||
@@ -37,7 +39,9 @@
|
||||
#include "codeview/codeview.c"
|
||||
#include "codeview/codeview_stringize.c"
|
||||
#include "msf/msf.c"
|
||||
#include "msf/msf_parse.c"
|
||||
#include "pdb/pdb.c"
|
||||
#include "pdb/pdb_parse.c"
|
||||
#include "pdb/pdb_stringize.c"
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user