Можно автоматизированно из одно C-программы сделать другую. Что-то заменив, добавив и т.п. Так же можно сделать с помощью awk/sed, например, но awk не понимает грамматику C и может что-нибудь испортить (или эту грамматику сложно описать на awk). Например, вписать вызов нужных функций на входе в каждую функцию программы и выходе. И получить таким образом трассировку (врукопашную расставлять трейспоинты тяжко и нереально для библиотек и уже написанных программ).