This repository has been archived by the owner on Jul 15, 2023. It is now read-only.
Support relative paths in debug symbol information #2963
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When Bazel produces go binary in debug mode, it strips out absolute paths from source file paths to make artifacts deterministic. This means, though, that VS Code is unable to correctly set breakpoints for such a binary, and in general, unable to match sources in the binary being debugged with the local sources. This all because vscode-go plugin expects go binary to contain absolute paths.
The plugin has support for "remotePath" property but it can't be left empty to strip out absolute path, so a separate property is introduced "useRelativePaths"; if set to true the plugin would use relative source file path to match with debugging symbol information.
Another property 'pathSeparator' allows to specify the separator type (windows
\
or unix/
). This simplifies remote debugging of binaries compiled for the platform not identical to the one which runs VS Code. Default value 'auto' resembles the current behavior where remote path separator is inferred fromremotePath
parameter if one is specified.This change also refactors a potentially dangerous handling of
remotePath
parameter - instead of string replace it uses a safer variant of prefix match.