Hi,
Most likely, your program has a non-trivial structure, and injecting the instrumenting logic in it breaks something. You can troubleshoot it by configuring VisualGDB to stop directly at the entry point (VisualGDB Project Properties -> Embedded Debug Tweaking -> Step into new instance) and then stepping through the initialization code to see what is going on.
Another option would be to compare the <ProjectName>_instrumented.elf with the original ELF file produced by the project (e.g. using objdump) and double-check that the inserted instrumentation-related sections don’t overwrite anything.
You can see the log explaining the placement of the instrumentation sections by enabling View->Other Windows->VisualGDB Diagnostics Console before launching a debug session.