2017-02-27 2 views
0

Ich habe ein benutzerdefiniertes clang Frontend-Tool nach dem folgenden Link geschrieben. http://clang.llvm.org/docs/RAVFrontendAction.htmlAusnahme beim Ausführen von benutzerdefinierten clang Frontend-Tool für einige Eingabedateien

Jetzt gebe ich clang Quellcode selbst zu meinem Frontend-Tool für statische Analyse. Mein Werkzeug wirft eine Ausnahme für diesen Testfall https://llvm.org/svn/llvm-project/cfe/trunk/test/CXX/expr/expr.const/p2-0x.cpp

Aus der Dokumentation dieses Testfalls wird es für undefined Verhalten geschrieben. Und während ClangTool auf diesem Test ausgeführt wird, löst es stackoverflow Ausnahme aus, noch bevor die Steuerung in HandleTranslationUnit kommt.

Da clang AST für den obigen Testfall generieren kann, nehme ich an, dass die Ausnahme während der Kompilierung kommen könnte. Nun die Frage ist, kann ich nicht weiterhin AST-Knoten für solche Dateien besuchen, da mir die Semantik von Eingangsquelldateien egal ist. Ich bin nur an statischen Analysen interessiert.

Ist dies das erwartete Verhalten? Dann, wie man den erzeugten AST durchquert und die Knoten besucht. Ich bin wirklich in diesem Moment fest und habe keine Ahnung, wie es weitergeht. Würdest du mir bitte helfen, dieses Problem zu beheben.

Vielen Dank im Voraus!

Danke, Hemant Bhagat

Antwort

0

fand ich die Antwort. Es gibt ein Problem mit der Systemrekursionstiefe. Bei Windows ist die Standard-Rekursionstiefe auf 512 begrenzt. Im Fall des genannten Testfalls wird der Stack also bereits vor Erreichen der Rekursionsgrenze übergelaufen. Verringern des Rekursionstiefenlimits auf 27 vermiedene Stapelüberlaufausnahme.

Ähnlich verhält es sich mit der Vorlagentiefe.

Verwandte Themen