vscode本地无源码远程调试c++项目的插件实现方案
目标是希望自定义scheme实现跳转远程文档
例如:sourcefilemap:{"/":"XXX:/"}
方案一:采用vscode.TextDocumentContentProvider
验证效果:
方案可行,可以正常跳转,但是文件编辑过程体验不佳;
实现参考:(采用ssh2读取远程文件)
https://code.visualstudio.com/api/extension-guides/virtual-documents
Editable TextDocumentContentProvider for extensions
https://github.com/microsoft/vscode/issues/10547
方案二:采用vscode.FileSystemProvider
验证效果:
由于调试插件cpp-tools或者gdb的source路径会被转义\被转义为%5C,不能正常识别scheme;但是可以通过修改vscode workbench修补这个问题;例如用c/c++写个控制台程序,插件active时调用一下即可
具体的就是修改workbench.desktop.main.js中的getUriFromSource的实现,将%5C替换回/,即
function getUriFromSource(raw, path, sessionId) {
try{
if(path.startsWith('XXX')){
path = path.replace(/%5C/g,'/');
raw.path = path;
}
}catch(err){
console.log(err);
}
...
同时移除product.json中的,vs/workbench/workbench.desktop.main.js checksum校验节点;
当然在插件中修改应用这样的操作有些太直接太imba,也可以修改后自行编译vscode版本;
实现参考:(采用ssh2读写远程文件)
Why TextDocumentContentProvider dont call provideTextDocumentContent on update when query params changes?
https://stackoverflow.com/questions/47888617/why-textdocumentcontentprovider-dont-call-providetextdocumentcontent-on-update-w
How to work with FileSystemProvider file systems in Visual Studio Code
https://stackoverflow.com/questions/50198150/how-to-work-with-filesystemprovider-file-systems-in-visual-studio-code
https://github.com/carreath/VSCode-Extension-Showcase/blob/f6b3a1b57bf71d42e4d65e8487bfe11ba660aa8c/fsprovider-sample/src/fileSystemProvider.ts
- 点赞
- 收藏
- 关注作者
评论(0)