visual-studio-code - 调试崩溃的语言服务器

标签 visual-studio-code vscode-extensions language-server-protocol

如果我在这里的细节有点少,我深表歉意,但主要问题实际上是试图找到我的代码的问题。我正在更新我自己的基于语言服务器示例 ( https://code.visualstudio.com/docs/extensions/example-language-server ) 的旧扩展。我遇到了一个问题,当我使用 F5 运行我的代码的客户端部分并且调试窗口触发时,我得到:

CSSLint 语言客户端服务器在过去 3 分钟内崩溃了 5 次。服务器不会重新启动。

好的......所以......事情就是这样。我的扩展客户端代码中的问题 View 没有显示任何内容。该代码窗口的 DevTools 没有显示任何内容。

我的服务器代码的问题 View 没有显示任何内容。开发者工具,同上。

对于 Extension Developer Host 实例,DevTools 确实显示了这一点:

messageService.ts:126 CSSLint 语言客户端服务器在过去 3 分钟内崩溃了 5 次。服务器不会重启.e.doShow @ messageService.ts:126

但是我无法深入研究细节以找到错误。所以问题是 - 假设我的服务器代码出现故障,错误究竟在哪里可用?

最佳答案

这是我通常用来跟踪服务器崩溃的方法(我假设您的服务器是用 JavaScript/TypeScript 编写的)。

使用以下服务器选项:

    let serverModule = "path to your server"
let debugOptions = { execArgv: ["--nolazy", "--debug=6009"] };
let serverOptions = {
    run: { module: serverModule, transport: TransportKind.ipc },
    debug: { module: serverModule, transport: TransportKind.ipc, options: debugOptions}
};

这里的关键是使用 TransportKind.ipc。服务器中发生并打印到 stdio 的错误将显示在与您的服务器关联的输出 channel 中(输出 channel 的名称是传递给 LanguageClient 的名称)

如果要调试服务器启动/初始化序列,可以将 debugOptions 更改为:
let debugOptions = { execArgv: ["--nolazy", "--debug-brk=6009"] };

如果扩展在 Debug模式下启动(例如,例如使用 F5 从 VS Code 启动),则 LanguageClient 会自动以 Debug模式启动服务器。如果扩展正常启动(例如作为 VS Code 中的真实扩展),那么服务器也会正常启动。

为了使这一切正常工作,您需要一个最新版本的 LSP 节点 npm 模块,用于服务器可以客户端(例如 2.6.x)

关于visual-studio-code - 调试崩溃的语言服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41730866/

相关文章:

VS 代码中的 Go linter 不适用于跨多个文件的包?

GIT 与 origin/master 同步要求凭据两次,VS Code,Ubuntu

node.js - 如何像我们做扩展一样在VSCODE上发布LSP语言服务器

node.js - 如何在 Kate 编辑器中启用 yaml 语言服务器

typescript - Emacs LSP 模式 - 是否可以避免单击鼠标来完成建议的操作?

c# - 在 Visual Studio Code 中禁用 "Run last successful build"(!)

typescript - 如何在VsCode中加速Typescript Intellisense?

javascript - Javascript 中缺少模块,但 Typescript 中没有

visual-studio-code - 如何更改 VS Code 侧边栏和顶部栏中的字体大小

visual-studio-code - 如何从 VSCode 扩展 API 获取突出显示的文本