나는 문장 바로 앞에 문장을 추가하여 clang의 특정 문장을 계측해야합니다. 나는 Expr 객체에 대한 포인터를 가지고 있는데, 이것을 포함하는 문장 바로 앞에 다른 명령문을 삽입해야한다. 지금은 내가 볼 때까지 SourceLocation 포인터를 뒤로 이동시키는 해킹 접근법을 사용하고 있습니다. 또는} 또는 {. 그러나 이것은 모든 경우에 적용되지는 않습니다. 예를 들어 for 문을 계측하려고하면 실패합니다. 더 깨끗한 방법으로이를 수행 할 수있는 메소드를 제공하는 clang 클래스가 있습니까?clang을 사용하여 다른 문장 바로 앞의 문장을 계측하는 방법
편집 : 여기 내 코드 조각입니다. 포인터 역 참조를 포함하는 명령문 바로 앞에 어설 션을 삽입해야합니다.
bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
if (E->getOpcode() == UO_Deref){
Expr *e1 = E->getSubExpr();
SourceLocation SL = E->getLocStart();
}
return true;
}
당신이 그 소리를 사용하고 있습니까 질문 플러그인, LibTooling, libclang? – ekeren
LibTooling을 사용하고 있습니다. 나는 계측을 위해 시동 코드를 사용했기 때문에 완전히 확신 할 수는 없습니다. – anirudh