This is already fixed in Emacs 28 thanks to bug#44173 (a78c614), which replaces the old GDB/MI parser (that converted the data to JSON first) with a more-robust parser. Attached is a patch to fix this under Emacs 27. The problem is that in `gdb-jsonify-buffer', when replacing the "fullname" with a Tramp path, the wildcard was greedy, resulting in only one "fullname" being replaced in the buffer. This had the effect of rendering it impossible to have more than one breakpoint, as all but the first breakpoint would have unmodified "fullname"s. (Note: I have a couple of patches in Tramp already that put me at the limit for patches without copyright assignment paperwork. However, I've already requested the form.)