Ich muss bestimmte Anweisungen in clang durch Hinzufügen einer Anweisung unmittelbar davor instrumentieren. Ich habe einen Zeiger auf ein Expr-Objekt, mit dem ich eine andere Anweisung kurz vor der Anweisung einfügen muss, die sie enthält. Im Moment verwende ich einen Hacky-Ansatz, der den SourceLocation-Zeiger einfach zurück bewegt, bis ich ein sehe; oder oder {. Aber das funktioniert nicht in allen Fällen. Wenn ich beispielsweise versuche, ein for-Statement zu instrumentieren, schlägt es fehl. Gibt es eine Klasse in Clang, die eine Methode bietet, dies auf eine sauberere Art und Weise zu tun?So instrumentieren Sie eine Anweisung kurz vor einer anderen Anweisung mit clang
EDIT: Hier ist Schnipsel meines Codes. Ich muss eine Bestätigung direkt vor der Anweisung einfügen, die eine Zeiger-Dereferenzierung enthält.
bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
if (E->getOpcode() == UO_Deref){
Expr *e1 = E->getSubExpr();
SourceLocation SL = E->getLocStart();
}
return true;
}
Sie Klirren verwenden Frage SO Prüfung können Plugin, LibTooling, von libclang? – ekeren
Ich benutze LibTooling, denke ich. Ich habe einen Startcode für die Instrumentierung verwendet, daher bin ich mir nicht ganz sicher. – anirudh