функция трассировки аспекта С++, управляющая потоком и входными и выходными параметрами

Я использую аспект С++ для создания потока управления программой.

trace.ah:

    #ifndef __trace_ah__
    #define __trace_ah__

    #include <cstdio>
    // Control flow tracing example

    aspect trace {
            // print the function name before execution starts

            pointcut virtual methods() = "% ...::%(...)";

            advice execution (methods()) : before () {
                cout << "entering: " << JoinPoint::signature() << endl;
                // print input parameters**
            }

            advice execution(methods()) : after() {
                // print output parameters**            
                cout << "leaving: " << JoinPoint::signature() << endl;
            }
//prints return values of non void functions 
advice execution("% ...::%(...)" && !"void ...::%(...)") : after() 
{


    JoinPoint::Result res = *tjp->result();
    cout << "leaving " << tjp->signature()<< " << returning value--" << res<<endl;
}
};
    };

    #endif  

Вопрос:

1.Как распечатать сами переменные, которые передаются в качестве аргументов функциям?

2.Как распечатать значения входных параметров каждой функции?


person Step    schedule 28.10.2015    source источник