If you want to debug the firmware starting from the beginning, yes, this is PlatformIO’s default behavior. But it can be manually overriden to not do a reset, in general see Attach debugger to running program without reset.
Hm, might have to do with the default debug_init_cmds
where the target is (maybe) flashed, halted, breakpoints are added, and then restarted again, but without a debug_init_break
it would behave differently.
Since I’ve not worked with the chip on the Arduino Due before I can’t tell that. Are the JTAG / SWD pins overlapping with the SPI pins? That would be weird because then you couldn’t debug the target and use the display. Usually those are different pins / pads.
Maybe it’s also an effect that PlatformIO resets the board and the display initialization routine is run that triggers a display clear / reset? In my view it would be very unlikely that, even if JTAG signals were given on the SPI bus, that those would be valid or triggering just the right SPI writes / commands to trigger a reset. But if one of the JTAG lines is also connected to a display reset line, it might caue it ofc.