Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 调试崩溃的语言服务器_Visual Studio Code_Vscode Extensions_Language Server Protocol - Fatal编程技术网

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

Visual studio code 调试崩溃的语言服务器,visual-studio-code,vscode-extensions,language-server-protocol,Visual Studio Code,Vscode Extensions,Language Server Protocol,我很抱歉,如果我在这里的细节有点少,但主要的问题实际上是试图找到我的代码的问题。我正在更新我自己的旧扩展,它基于语言服务器示例()。我遇到了一个问题,当我使用F5运行代码的客户端部分时,调试窗口启动,我得到: CSSLint语言客户端服务器在过去3分钟内崩溃了5次。服务器将不会重新启动 好的。。。所以事情是这样的。我的扩展客户机代码中的problems视图没有显示任何内容。该代码窗口的DevTools没有显示任何内容 “我的服务器代码”的“问题”视图没有显示任何内容。DevTools,同上 对于

我很抱歉,如果我在这里的细节有点少,但主要的问题实际上是试图找到我的代码的问题。我正在更新我自己的旧扩展,它基于语言服务器示例()。我遇到了一个问题,当我使用F5运行代码的客户端部分时,调试窗口启动,我得到:

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

好的。。。所以事情是这样的。我的扩展客户机代码中的problems视图没有显示任何内容。该代码窗口的DevTools没有显示任何内容

“我的服务器代码”的“问题”视图没有显示任何内容。DevTools,同上

对于Extension Developer主机实例,DevTools确实显示了以下内容:

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


但我无法深入细节来找到bug。所以问题是——假设我的服务器代码失败了,那么错误到底会出现在哪里?

下面是我通常用来跟踪服务器崩溃的方法(我假设您的服务器是用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的错误将显示在与服务器关联的输出通道中(输出通道的名称是传递给LanguageClient的名称)

如果要调试服务器启动/初始化序列,可以将调试选项更改为:

let debugOptions = { execArgv: ["--nolazy", "--debug-brk=6009"] };
如果扩展在调试模式下启动(例如,使用F5从VS代码启动),则LanguageClient会在调试模式下自动启动服务器。如果扩展正常启动(例如VS代码中的实际扩展),那么服务器也会正常启动


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

据我所知,问题在于服务器端有一个特定的require语句。我现在正在运行它,但我需要回到原始代码并使其正常工作,这需要我能够以某种方式找到错误。因此,我尝试了您建议的调试brk方法,并在我的服务器代码中添加了:let foo=require2('./csslint');然后我进行了构建,在我的客户机代码中,点击f5,我的第三个VSCode窗口弹出。但是我在客户端代码窗口中什么也看不到。没有任何迹象表明服务器代码出错。您提到您基于的语言服务器。其中包括如何调试客户端和服务器的步骤。如果使用--debug brk启动服务器,它将在server.js文件的第一条语句中中断。因此,您需要在通过--debug brk传递的端口上将调试器附加到服务器。这将允许您单步执行服务器代码。您的项目在GitHub上可用吗。如果是这样的话,我可以看一看并帮助设置一切。是的-我遵循图坦卡蒙-主要的区别是你用了上面的6009,他们似乎用了6004。按照操作顺序,在服务器上按ctrl+shift+b,在客户端按f5,然后在服务器上按f5。控制台中仍然没有任何内容。我可以分享代码——让我来检查一下——但要知道,server.js中有一个故意的bug,试图帮助充实它。