简体   繁体   English

Eclipse(Juno)CDT索引器:“解析时出错...”一个Makefile项目

[英]Eclipse (Juno) CDT indexer: “Error while parsing…” a Makefile project

I am working on a clone of this Github project in Eclipse CDT and I haven't managed to create an error-free index of it (an example of the error log is given below for AncSplit.cpp ). 我正在Eclipse CDT中对该Github项目进行克隆,但尚未设法创建它的无错误索引(下面为AncSplit.cpp提供了错误日志的AncSplit.cpp )。 All the CPU resources (Intel® Core™ i7 CPU X 940 @ 2.13GHz × 8 with 8Gb RAM) are taken up for a while and parsing errors are generated for every .cpp and .h file in the project. 所有CPU资源(英特尔®酷睿™i7 CPU X 940 @ 2.13GHz×8,带有8Gb RAM)被占用一段时间,并且为项目中的每个.cpp.h文件生成解析错误。

In order to reproduce/identify the problem I only kept the source files and the the customized project Makefile in a single folder. 为了重现/确定问题,我仅将源文件和自定义项目Makefile保留在单个文件夹中。 I also removed Eclipse (and workspace preferences...) and reinstalled it from scratch . 我还删除了Eclipse(以及工作空间首选项...),并从头开始重新安装了它。
NB I also made the following changes -Xms1G , -Xmx2G and -XX:MaxPermSize=1G in the eclipse.ini file in order to bypass insufficient heap space related problems. 注意我还对eclipse.ini文件进行了-Xms1G-Xmx2G-XX:MaxPermSize=1G的以下更改,以绕过与堆空间不足相关的问题。
I am using Eclipse : 我正在使用Eclipse:
Version: Juno Service Release 1 版本:Juno Service Release 1
Build id: 20121004-1855 Build ID:20121004-1855

Thanks in advance. 提前致谢。

!SESSION 2012-12-12 23:44:47.084 -----------------------------------------------
eclipse.buildId=M20120914-1800
java.version=1.7.0_10
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.cpp.product
Command-line arguments:  -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.cpp.product

!ENTRY org.eclipse.cdt.core 4 0 2012-12-13 00:07:02.918
!MESSAGE Error while parsing /lagrange/AncSplit.cpp.
!STACK 0
java.lang.NullPointerException
    at org.eclipse.cdt.internal.core.dom.parser.Value.isDependentValue(Value.java:373)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.isDependentArgument(CPPTemplates.java:2323)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.hasDependentArgument(CPPTemplates.java:2313)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiate(CPPTemplates.java:181)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiate(CPPTemplates.java:166)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveDeferredClassInstance(CPPTemplates.java:2468)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveUnknown(CPPTemplates.java:2393)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1173)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveUnknown(CPPTemplates.java:2401)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1173)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.AbstractCPPClassSpecializationScope.getBases(AbstractCPPClassSpecializationScope.java:158)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.getBases(CPPClassSpecialization.java:219)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper.getBases(ClassTypeHelper.java:243)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BaseClassLookup.lookupInBaseClass(BaseClassLookup.java:192)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BaseClassLookup.lookupInBaseClass(BaseClassLookup.java:235)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BaseClassLookup.lookupInBaseClasses(BaseClassLookup.java:54)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.lookup(CPPSemantics.java:983)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveUnknownName(CPPSemantics.java:3679)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveUnknown(CPPTemplates.java:2425)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1173)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1223)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.TemplateArgumentDeduction.deduceFromFunctionArgs(TemplateArgumentDeduction.java:125)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.TemplateArgumentDeduction.deduceForFunctionCall(TemplateArgumentDeduction.java:88)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateForFunctionCall(CPPTemplates.java:1749)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateForFunctionCall(CPPTemplates.java:1728)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveFunction(CPPSemantics.java:2363)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalFunctionSet.resolveFunction(EvalFunctionSet.java:187)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalFunctionCall.instantiate(EvalFunctionCall.java:202)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalUnary.instantiate(EvalUnary.java:281)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinary.instantiate(EvalBinary.java:343)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateValue(CPPTemplates.java:866)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.createSpecialization(CPPTemplates.java:786)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.specializeMember(CPPClassSpecialization.java:176)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.AbstractCPPClassSpecializationScope.getBindings(AbstractCPPClassSpecializationScope.java:116)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.getBindingsFromScope(CPPSemantics.java:1205)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.lookup(CPPSemantics.java:953)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalID.resolveName(EvalID.java:320)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalID.instantiate(EvalID.java:307)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinary.instantiate(EvalBinary.java:343)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinary.instantiate(EvalBinary.java:343)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateValue(CPPTemplates.java:866)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.createSpecialization(CPPTemplates.java:786)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.specializeMember(CPPClassSpecialization.java:176)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.AbstractCPPClassSpecializationScope.getBindings(AbstractCPPClassSpecializationScope.java:116)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.getBindingsFromScope(CPPSemantics.java:1205)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.lookup(CPPSemantics.java:953)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalID.resolveName(EvalID.java:320)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalID.instantiate(EvalID.java:307)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateValue(CPPTemplates.java:866)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateArgument(CPPTemplates.java:1079)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateArguments(CPPTemplates.java:1053)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveDeferredClassInstance(CPPTemplates.java:2447)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveUnknown(CPPTemplates.java:2393)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1173)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.resolveUnknown(CPPTemplates.java:2401)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates.instantiateType(CPPTemplates.java:1173)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.AbstractCPPClassSpecializationScope.getBases(AbstractCPPClassSpecializationScope.java:158)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.getBases(CPPClassSpecialization.java:219)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper.getBases(ClassTypeHelper.java:243)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.inheritanceClosure(SemanticUtil.java:153)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.getConversionOperators(SemanticUtil.java:129)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BuiltinOperators.getClassConversionTypes(BuiltinOperators.java:669)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BuiltinOperators.arithmeticAssignement(BuiltinOperators.java:487)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BuiltinOperators.create(BuiltinOperators.java:195)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BuiltinOperators.create(BuiltinOperators.java:68)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.findOverloadedOperator(CPPSemantics.java:3383)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.findOverloadedBinaryOperator(CPPSemantics.java:2992)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinary.computeOverload(EvalBinary.java:242)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.EvalBinary.getOverload(EvalBinary.java:224)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.getOverload(CPPASTBinaryExpression.java:262)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.getImplicitNames(CPPASTBinaryExpression.java:131)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTBinaryExpression.accept(CPPASTBinaryExpression.java:164)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTExpressionStatement.accept(CPPASTExpressionStatement.java:73)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:85)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIfStatement.accept(CPPASTIfStatement.java:145)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:85)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTIfStatement.accept(CPPASTIfStatement.java:145)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:85)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:201)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTemplateDeclaration.accept(CPPASTTemplateDeclaration.java:127)
    at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:139)
    at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:251)
    at org.eclipse.cdt.internal.core.pdom.PDOMWriter.extractSymbols(PDOMWriter.java:444)
    at org.eclipse.cdt.internal.core.pdom.PDOMWriter.addSymbols(PDOMWriter.java:225)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:1170)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:1007)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:828)
    at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:508)
    at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:139)
    at org.eclipse.cdt.internal.core.pdom.indexer.PDOMRebuildTask.run(PDOMRebuildTask.java:87)
    at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

Figured it out, it was indeed a bug ( and I have filed one ). 想通了,这确实是一个错误( 我已经提交了一个错误)。
A colleague of mine managed to flawlessly index the Github project which resulted in : 我的一位同事成功地将Github项目编入索引,结果是:

Indexed 'src' (20 sources, 1,061 headers) in 43.46 sec: 86,471 declarations; 231,728 references; 0 unresolved inclusions; 12 syntax errors; 592 unresolved names (0.19%)

He was on a Fedora distribution with its default package of Eclipse Juno CDT. 他在Fedora发行版中使用其默认软件包Eclipse Juno CDT。 This meant that he was using : 这意味着他正在使用:

Eclipse C/C++ Development Tools Eclipse C / C ++开发工具
Version: 8.1.0.201206111645 版本:8.1.0.201206111645

which is not quite the same as the standard Juno CDT download : 与标准的Juno CDT下载不太一样:

Eclipse C/C++ Development Tools Eclipse C / C ++开发工具
Version: 8.1.1.201209170703 版本:8.1.1.201209170703

I checked this workaround on my Ubuntu system (12.04 LTS) by installing Classic Juno along with CDT 8.1.0 and the indexing/parsing works all right now. 我通过安装Classic Juno和CDT 8.1.0在我的Ubuntu系统(12.04 LTS)上检查了此解决方法,并且索引/解析现在可以正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM