I've been working on JPDB is a GDB like debugger for waveforms. if you give JPDB a waveform* and some other information, then you can step through the program that was executed when that waveform was created.
i say GDB-like because JPDB has it's own GDB client (its called shucks), that implements the client side logic of the GDB protocol faithfully, but doesnt have all of the GDB niceties (like python integration, etc). this allows the project to be specialized on debugging waveforms specifically, when compared to another approach like connecting to a gdb client
JPDB integrates with the waveform viewer surfer (https://surfer-project.org/), so you can look at other signals there. this is still ongoing because the underlying protocol (WCP) is a little Fresh
if you're developing your own CPU, give it a shot. Superscalar designs arent supported yet but it would be pretty straightforward, just give me your waves ( i am touching my fingers together villainously as i type this) and i will make it happen
also if you want to use system with a "normal" gdb client, the dang library presents a gdbstub server, so you can run that and connect to it.
here's a demo but it should work on your local machine if you follow the readme: