Herramienta para rastrear llamadas a funciones locales en Linux

Estoy buscando una herramienta comotraza ostrace que puede rastrear funciones definidas localmente en un ejecutable. ltrace solo rastrea las llamadas de la biblioteca dinámica y strace solo rastrea las llamadas del sistema. Por ejemplo, dado el siguiente programa C:

#include <stdio.h>

int triple ( int x )
{
  return 3 * x;
}

int main (void)
{
  printf("%d\n", triple(10));
  return 0;
}

Ejecutando el programa conltrace&nbsp;mostrará la llamada aprintf&nbsp;ya que es una función de biblioteca estándar (que es una biblioteca dinámica en mi sistema) ystrace&nbsp;mostrará todas las llamadas del sistema desde el código de inicio, las llamadas del sistema utilizadas para implementar printf y el código de apagado, pero quiero algo que me muestre que la funcióntriple&nbsp;fue llamado. Suponiendo que las funciones locales no han sido alineadas por un compilador optimizador y que el binario no ha sido eliminado (símbolos eliminados), ¿hay alguna herramienta que pueda hacer esto?

Editar

Un par de aclaraciones:

Está bien si la herramienta también proporciona información de rastreo para funciones no locales.No quiero tener que volver a compilar los programas con soporte para herramientas específicas, la información del símbolo en el ejecutable debería ser suficiente.Sería realmente agradable si pudiera usar la herramienta para adjuntar a procesos existentes como puedo con ltrace / strace.