From 48f0702e058a1113ec483a8c74360f91716f69e9 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 26 Mar 2025 11:49:15 -0700 Subject: [PATCH] fix source markup parsing, release notes for source-defined watch annotations --- src/mule/mule_main.cpp | 8 ++++---- src/raddbg/raddbg_main.c | 14 ++++++++++++-- src/raddbg/raddbg_widgets.c | 3 ++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/mule/mule_main.cpp b/src/mule/mule_main.cpp index 4742f35f..81eb08df 100644 --- a/src/mule/mule_main.cpp +++ b/src/mule/mule_main.cpp @@ -1642,9 +1642,9 @@ fancy_viz_eval_tests(void) " return 0;\n" "}\n\n"); int x1 = 0; - raddbg_pin(long_string, "text"); - raddbg_pin(code_string, "text(lang=c)"); - raddbg_pin(fancy_viz_eval_tests, "disasm"); + raddbg_pin(long_string, text); + raddbg_pin(code_string, text(lang=c)); + raddbg_pin(fancy_viz_eval_tests, disasm); //- rjf: bitmaps unsigned int background_color = 0x00000000; @@ -1676,7 +1676,7 @@ fancy_viz_eval_tests(void) bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, bg, }; - raddbg_pin(bitmap, "bitmap:(w:18, h:18)"); + raddbg_pin(bitmap, bitmap(18, 18)); for(int i = 0; i < sizeof(bitmap)/sizeof(bitmap[0]); i += 1) { unsigned int r = bitmap[i]&0x000000ff; diff --git a/src/raddbg/raddbg_main.c b/src/raddbg/raddbg_main.c index 28bc4b75..6e1f9ec3 100644 --- a/src/raddbg/raddbg_main.c +++ b/src/raddbg/raddbg_main.c @@ -35,11 +35,21 @@ // common case is debugging a small number of programs, usually 1, and for // those purposes, the `Threads` view is sufficient if not desirable, and // the extra information provided by `Processes` and `Machines`, while useful -// in other contexts, is not useful in that common case. +// in other contexts, is not useful in that common case. The `Machines` view +// now shows a superset of the information previosuly found in the +// `Scheduler` view. // - The two separate interfaces for editing threads, breakpoints, and watch // pins (the right-click context menu and the dedicated tabs) have been // merged. -// - Added the ability to add per-target environment strings. +// - Added the ability to add a list environment strings to targets. +// - Added support for watch annotations derived from source code markup, +// rather than only from configuration. Instances of +// `raddbg_pin(, )` will be parsed, and used to create watch +// annotations inline with source code, in the same way that watch pins do. +// For instance, `raddbg_pin(dynamic_array, slice)` will visualize +// `dynamic_array` with a `slice` view rule; +// `raddbg_pin(some_function, disasm)` will visualize `some_function` as +// disassembly; and so on. // - Fixed an annoyance where the debugger would open a console window, even // for graphical programs, causing a flicker. diff --git a/src/raddbg/raddbg_widgets.c b/src/raddbg/raddbg_widgets.c index b7725900..193f6396 100644 --- a/src/raddbg/raddbg_widgets.c +++ b/src/raddbg/raddbg_widgets.c @@ -1910,9 +1910,10 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe U64 arg_start_off = 0; for(U64 contents_off = 0; contents_off <= contents.size; contents_off += 1) { - if(contents_off == contents.size || contents.str[contents_off] == ',') + if(nest == 0 && (contents_off == contents.size || contents.str[contents_off] == ',')) { String8 arg = str8_substr(contents, r1u64(arg_start_off, contents_off)); + arg = str8_skip_chop_whitespace(arg); str8_list_push(scratch.arena, &args, arg); arg_start_off = contents_off+1; }