From d02be6bf77556ba0870c3a4df59fe326701e0026 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sat, 22 Mar 2014 01:18:43 -0400 Subject: [PATCH] Bug 430282 - Trace indexer exceptions for easier diagnosis of bugs Change-Id: I208a77af84cc3f3dd017456133edd5e3fa4c7743 Signed-off-by: Nathan Ridge Reviewed-on: https://git.eclipse.org/r/23743 Tested-by: Hudson CI Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../cdt/internal/core/pdom/AbstractIndexerTask.java | 3 +++ .../eclipse/cdt/internal/core/pdom/PDOMWriter.java | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java index 3b357eb1561..039e6b3cc66 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java @@ -1137,6 +1137,9 @@ public abstract class AbstractIndexerTask extends PDOMWriter { s= createStatus(getMessage(MessageKind.errorWhileParsing, file), e); } logError(s); + if (fShowProblems) { + reportException(e); + } if (++fStatistics.fErrorCount > MAX_ERRORS) { throw new CoreException(createStatus(getMessage(MessageKind.tooManyIndexProblems))); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java index 6da9134dc48..6226751bccd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java @@ -63,6 +63,8 @@ import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Status; import org.eclipse.osgi.util.NLS; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -191,7 +193,7 @@ abstract public class PDOMWriter implements IPDOMASTProcessor { } } - private boolean fShowProblems; + protected boolean fShowProblems; protected boolean fShowInclusionProblems; private boolean fShowScannerProblems; private boolean fShowSyntaxProblems; @@ -663,6 +665,14 @@ abstract public class PDOMWriter implements IPDOMASTProcessor { String msg= "Indexer: " + problem.getMessageWithLocation(); //$NON-NLS-1$ trace(msg); } + + protected void reportException(Throwable th) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + th.printStackTrace(pw); + String msg= "Indexer: exception: " + sw.toString(); //$NON-NLS-1$ + trace(msg); + } protected void trace(String message) { System.out.println(message);