How does the register view (in debugging mode) get populated?

I am trying to fix what seems like a bug in the configuration of the SiFive boards. When using QEMU as the debug tool the registers don’t update in the left hand side panel. Other aspects of the panel work, like the variable view. Using GDB in the console shows the correct register values though. I’m not sure if this means that the configuration is correct and something more fundamental is broken or if it tells me nothing about the configuration’s correctness.

Does anyone know how the debug view gets its data and does its updates?

Accepting the GDB response for the info registers and decoding it into the debug view is something that I think is done in the PlatformIO VSCode extension (javascript code). Unfortunately that part is not fully open source, see https://github.com/platformio/platformio-vscode-ide/ and https://www.npmjs.com/package/platformio-vscode-debug.