fix unmapped address visualization when reading is impossible + stop it from terminating rest of useful visualization

This commit is contained in:
Ryan Fleury
2026-05-18 20:01:15 -07:00
parent 80d68b7f95
commit 40885a3f59
6 changed files with 14 additions and 13 deletions
+1
View File
@@ -5272,6 +5272,7 @@ d_ctrl_thread__open_crash_dump(DMN_CtrlCtx *ctrl_ctx, D_Msg *msg)
String8 module_name_raw_data = str8_prefix(str8_skip(data, off), module_name_size);
String16 module_name_16 = str16((U16 *)module_name_raw_data.str, module_name_raw_data.size / sizeof(U16));
module_name = str8_from_16(scratch.arena, module_name_16);
module_name = path_normalized_from_string(scratch.arena, module_name);
}
// rjf: open module
@@ -1849,25 +1849,20 @@ ev_string_iter_next(Arena *arena, EV_StringIter *it, String8 *out_string)
//- rjf: step 0: do pre-prefix pointer value if requested
case 0:
{
if(!(params->flags & EV_StringFlag_DisableAddresses) &&
(!ptr_data->addr_is_good || params->flags & EV_StringFlag_AddressesBeforeContent))
if(!(params->flags & EV_StringFlag_DisableAddresses) && params->flags & EV_StringFlag_AddressesBeforeContent)
{
Temp scratch = scratch_begin(&arena, 1);
String8 ptr_value_string = str8_from_u64(scratch.arena, ptr_data->value_eval.value.u64,
ptr_data->value_eval.value.u64 != 0 ? 16 : 10, 0, 0);
if(ptr_data->value_eval.value.u64 != 0 && !ptr_data->addr_is_good && params->flags & EV_StringFlag_ReadOnlyDisplayRules)
if(params->flags & EV_StringFlag_DisplayAddressUnmappedStatus && ptr_data->value_eval.value.u64 != 0 && !ptr_data->addr_is_good && params->flags & EV_StringFlag_ReadOnlyDisplayRules)
{
ptr_value_string = str8f(scratch.arena, "%S (unmapped)", ptr_value_string);
}
*out_string = str8_copy(arena, ptr_value_string);
ptr_data->did_pre_prefix_ptr = 1;
need_pop = !ptr_data->addr_is_good;
scratch_end(scratch);
}
else
{
need_pop = 0;
}
need_pop = 0;
}break;
//- rjf: step 1 -> try "prefix content", which we want to print before the pointer value,
@@ -2134,7 +2129,7 @@ ev_string_iter_next(Arena *arena, EV_StringIter *it, String8 *out_string)
{
Temp scratch = scratch_begin(&arena, 1);
String8 ptr_value_string = str8_from_u64(scratch.arena, ptr_data->value_eval.value.u64, ptr_data->value_eval.value.u64 != 0 ? 16 : 10, 0, 0);
if(params->flags & EV_StringFlag_ReadOnlyDisplayRules && ptr_data->value_eval.value.u64 != 0 && !ptr_data->addr_is_good)
if(params->flags & EV_StringFlag_DisplayAddressUnmappedStatus && params->flags & EV_StringFlag_ReadOnlyDisplayRules && ptr_data->value_eval.value.u64 != 0 && !ptr_data->addr_is_good)
{
ptr_value_string = str8f(scratch.arena, "%S (unmapped)", ptr_value_string);
}
@@ -234,6 +234,7 @@ enum
EV_StringFlag_DisableChars = (1<<4),
EV_StringFlag_DisableStringQuotes = (1<<5),
EV_StringFlag_AddressesBeforeContent = (1<<6),
EV_StringFlag_DisplayAddressUnmappedStatus = (1<<7),
};
typedef struct EV_StringParams EV_StringParams;
+2 -2
View File
@@ -10,8 +10,8 @@
typedef U32 FNT_RasterFlags;
enum
{
FNT_RasterFlag_Smooth = (1<<0),
FNT_RasterFlag_Hinted = (1<<1),
FNT_RasterFlag_Smooth = (1<<0),
FNT_RasterFlag_Hinted = (1<<1),
};
////////////////////////////////
+2 -2
View File
@@ -12,8 +12,8 @@
typedef U32 FP_RasterFlags;
enum
{
FP_RasterFlag_Smooth = (1<<0),
FP_RasterFlag_Hinted = (1<<1),
FP_RasterFlag_Smooth = (1<<0),
FP_RasterFlag_Hinted = (1<<1),
};
typedef struct FP_Handle FP_Handle;
+4
View File
@@ -12302,6 +12302,10 @@ rd_frame(void)
{
rd_state->eval_viz_base_string_flags |= EV_StringFlag_AddressesBeforeContent;
}
if(!d_user_state->ctrl_is_running)
{
rd_state->eval_viz_base_string_flags |= EV_StringFlag_DisplayAddressUnmappedStatus;
}
////////////////////////////
//- rjf: autosave if needed