mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-11 08:08:08 +00:00
fix unmapped address visualization when reading is impossible + stop it from terminating rest of useful visualization
This commit is contained in:
@@ -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);
|
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));
|
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 = str8_from_16(scratch.arena, module_name_16);
|
||||||
|
module_name = path_normalized_from_string(scratch.arena, module_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// rjf: open module
|
// 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
|
//- rjf: step 0: do pre-prefix pointer value if requested
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if(!(params->flags & EV_StringFlag_DisableAddresses) &&
|
if(!(params->flags & EV_StringFlag_DisableAddresses) && params->flags & EV_StringFlag_AddressesBeforeContent)
|
||||||
(!ptr_data->addr_is_good || params->flags & EV_StringFlag_AddressesBeforeContent))
|
|
||||||
{
|
{
|
||||||
Temp scratch = scratch_begin(&arena, 1);
|
Temp scratch = scratch_begin(&arena, 1);
|
||||||
String8 ptr_value_string = str8_from_u64(scratch.arena, ptr_data->value_eval.value.u64,
|
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);
|
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);
|
ptr_value_string = str8f(scratch.arena, "%S (unmapped)", ptr_value_string);
|
||||||
}
|
}
|
||||||
*out_string = str8_copy(arena, ptr_value_string);
|
*out_string = str8_copy(arena, ptr_value_string);
|
||||||
ptr_data->did_pre_prefix_ptr = 1;
|
ptr_data->did_pre_prefix_ptr = 1;
|
||||||
need_pop = !ptr_data->addr_is_good;
|
|
||||||
scratch_end(scratch);
|
scratch_end(scratch);
|
||||||
}
|
}
|
||||||
else
|
need_pop = 0;
|
||||||
{
|
|
||||||
need_pop = 0;
|
|
||||||
}
|
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
//- rjf: step 1 -> try "prefix content", which we want to print before the pointer value,
|
//- 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);
|
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);
|
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);
|
ptr_value_string = str8f(scratch.arena, "%S (unmapped)", ptr_value_string);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,6 +234,7 @@ enum
|
|||||||
EV_StringFlag_DisableChars = (1<<4),
|
EV_StringFlag_DisableChars = (1<<4),
|
||||||
EV_StringFlag_DisableStringQuotes = (1<<5),
|
EV_StringFlag_DisableStringQuotes = (1<<5),
|
||||||
EV_StringFlag_AddressesBeforeContent = (1<<6),
|
EV_StringFlag_AddressesBeforeContent = (1<<6),
|
||||||
|
EV_StringFlag_DisplayAddressUnmappedStatus = (1<<7),
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct EV_StringParams EV_StringParams;
|
typedef struct EV_StringParams EV_StringParams;
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
typedef U32 FNT_RasterFlags;
|
typedef U32 FNT_RasterFlags;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
FNT_RasterFlag_Smooth = (1<<0),
|
FNT_RasterFlag_Smooth = (1<<0),
|
||||||
FNT_RasterFlag_Hinted = (1<<1),
|
FNT_RasterFlag_Hinted = (1<<1),
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
typedef U32 FP_RasterFlags;
|
typedef U32 FP_RasterFlags;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
FP_RasterFlag_Smooth = (1<<0),
|
FP_RasterFlag_Smooth = (1<<0),
|
||||||
FP_RasterFlag_Hinted = (1<<1),
|
FP_RasterFlag_Hinted = (1<<1),
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct FP_Handle FP_Handle;
|
typedef struct FP_Handle FP_Handle;
|
||||||
|
|||||||
@@ -12302,6 +12302,10 @@ rd_frame(void)
|
|||||||
{
|
{
|
||||||
rd_state->eval_viz_base_string_flags |= EV_StringFlag_AddressesBeforeContent;
|
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
|
//- rjf: autosave if needed
|
||||||
|
|||||||
Reference in New Issue
Block a user