ESP32 debugging has been proven to have some quirks indeed. Since you’ve already defined the tbreak setup in the platformio.ini that should work out of the box. Try to follow this
So, no breakpoints, just press the Start Debugging button in VSCode and see if it breaks in setup().
Other documented quirks are e.g.
Of course, when it works under Windows, you can also try and get a comparison log where you execute the exact same procedure (starting, setting breakpoints, …) on Windows + Linux on the exact same board and see what the difference in log is.