Hi,
This might be caused by your bootloader (or some other part of the program) modifying the FLASH memory after it is programmed.
Either way, VisualGDB uses the regular “load” command (that in turn issues vFlashWrite packets to OpenOCD). If you would like to debug the FLASH programming logic used by VisualGDB, please consider creating a debug build of OpenOCD (our OpenOCD fork includes a convenient CMake-based project wrapper, see this tutorial).
Alteratively, please try runing the “load” command manually and verifying the memory contents just after it is programmed, but before the program got a chance to run.