2010-06-20 12 views
8

Tengo algunos archivos C muy grandes, que tienen muchas funciones. Necesito rastrear la ruta de ejecución en tiempo de ejecución. No hay forma de que pueda rastrearlo a través de la depuración ya que es un código de hipervisor que se ejecuta actualmente sobre qemu y que hace muchas traducciones binarias.Agregar printf al inicio de todas las funciones en un archivo

¿Alguien me puede señalar algún script en Perl o Python que puede agregar un printf al comienzo de todas las funciones y el texto podría ser algo como "Estoy en < nombre de función>"?

Respuesta

23

Solo pase -finstrument-functions a gcc al compilar. Consulte la página del manual gcc(1) para obtener más detalles.

+1

Respuesta perfecta al espíritu de la pregunta. –

+2

+1. Solo para agregar, el código de entrada puede verse así: printf ("Detalles de la función:% s \ n", ____PRETTY_FUNCTION____); ____PRETTY_FUNCTION____ es una macro predefinida que proporciona una cadena que contiene el nombre de la función + firma. – Fanatic23

+0

Nota: debe implementar cada función de rastreo manualmente, o usar una herramienta como 'etrace' que analiza el ELF y genera esas llamadas para usted: https://stackoverflow.com/questions/6176284/why-doesnt-finstrument-functions -trabaja para mi –

Cuestiones relacionadas