Hi,
VisualGDB uses different synchronization logic for different files/directories. E.g. the files in the source directory are only synchronized one way (Windows to Linux). Stepping into a source files that is not normally synchronized will get it temporarily downloaded under %LOCALAPPDATA% (next time you start the debug session, it will be rewritten).
We have also added support for advanced directory synchronization options in the upcoming v5.4 Beta 1. It allows defining arbitrary per-project or per-host directory pairs, setting advanced triggers for synchronization and allows transferring only changed files for both incoming and outgoing transfers. We are currently running the final tests on it and are expecting to release it in a few more days. Please consider waiting until we release it, as it might considerably simplify your setup.