Comment tracer appel de fonction en C?

Sans modifier le code source, comment puis-je trace les fonctions qui sont appelées et avec quels paramètres de certaines fonctions(dites func100 dans l'exemple suivant) est invoquée. Je voudrais la sortie comme suit:

enter func100(p1001=xxx,p1002=xxx)
        enter func110(p1101=xxx,p1102=xxx)
        exit  func110(p1101=xxx,p1102=xxx)
        enter func120(p1201=xxx,p1202=xxx,p1203=xxx)
                enter func121(p1211=xxx)
                exit  func121(p1211=xxx)
        exit  func120(p1201=xxx,p1202=xxx,p1203=xxx)
exit  func100(p1001=xxx,p1002=xxx)

est-ce faisable? ou, quelle est la solution avec un minimum de modifications du code source?

source d'informationauteur Andrew