调试C ++语言服务器错误:无效的AST

问题描述

我有一个C ++项目,可以在其中打开任何.cpp或.h,并且LSP将会崩溃/失败(我在lsp-mode中使用emacs)。

例如,如果我尝试打开名为IDictionary.h文件,则clangd将失败,并在 clangd :: stderr 缓冲区中出现以下错误

I[17:33:37.200] BeginSourceFile() Failed when building AST for /home/anlsh/work/horizon-runtime/src/prod/data/IDictionary.h
I[17:33:37.246] <-- textDocument/documentHighlight(103)
I[17:33:37.246] --> reply:textDocument/documentHighlight(103) 0 ms,error: invalid AST

ccls也失败(带有信号退出),尽管其错误消息也没有帮助

17:36:44 indexer6          indexer.cc:1302 E Failed to index /home/anlsh/work/horizon-runtime/src/prod/data/IDictionary.h
/snap/ccls/48/bin/../usr/lib/x86_64-linux-gnu/libLLVM-7.so.1(_ZN4llvm3sys15printstacktraceERNS_11raw_ostreamE+0x2a)[0x7f2301010e8a]
/snap/ccls/48/bin/../usr/lib/x86_64-linux-gnu/libLLVM-7.so.1(_ZN4llvm3sys17RunSignalHandlersEv+0x34)[0x7f230100f544]
/snap/ccls/48/bin/../usr/lib/x86_64-linux-gnu/libLLVM-7.so.1(+0x907682)[0x7f230100f682]
/snap/core18/current/lib/x86_64-linux-gnu/libpthread.so.0(+0x128a0)[0x7f22fff5a8a0]
/snap/ccls/48/bin/ccls(+0x24ae87)[0x5564df56ee87]
/snap/core18/current/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7f22fff4f6db]
/snap/core18/current/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f22ffc78a3f]

无论如何,项目中的每个文件都会发生这种情况,即使是简单的文件也是如此

#include "stdafx.h"
using namespace Api;

我的假设是build / compile_commands.json插入的某些文件正在破坏所有内容,但是我不确定。 VSCode(虽然我知道它有自己的技巧,但我认为它正在使用LSP)在我的项目中根本没有任何问题。

无论如何,我一直希望有人可以将我引向一些更详细的clangdccls日志,也许还有一些命令可以使我获得更多有用的错误消息或验证项目中的文件

解决方法

该问题似乎已在最新版本的clangd(11.0)和ccls(0.20190823.6-26-g141aea8a)上解决。

关于LLVM不和谐的Sam McCall也有这样的话

您可以通过在-lang = args中添加-log = verbose并提供更多日志来获取更多信息(可能相关的内容包括版本,路径,前言构建等)。 我对Windows stdafx不太了解,但是我知道它带来了很多东西,其中有些可能已经打上该版本的错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...