2008-09-10 18 views
46

Tengo una gran base de código heredada con makefiles muy complicados, con muchas variables. A veces tengo que cambiarlos, y me parece que es muy difícil descubrir por qué el cambio no funciona de la manera que esperaba. Lo que me gustaría encontrar es una herramienta que básicamente haga una depuración paso a paso del proceso "make", donde le daría un directorio, y podría ver el valor de diferentes variables en diferentes puntos en el proceso. Ninguno de los indicadores de depuración para hacer parece mostrarme lo que quiero, aunque es posible que me esté perdiendo algo. ¿Alguien sabe de una manera de hacer esto?Herramienta para depurar makefiles

Respuesta

48

¿Ha estado buscando el resultado de ejecutar make -n y make -np, y el biggie make -nd?

¿Está utilizando una versión bastante reciente de gmake?

¿Ha mirado el capítulo gratuito en Debugging Makefiles disponible en el sitio de O'Reilly para su excelente libro "Gestión de proyectos con GNU Make" (Amazon Link).

3

No conozco ninguna bandera específica que haga exactamente lo que quiere, pero

--print-data-base
parece que podría ser útil.

+0

o '-p' como alias – sercxjo

20

Estoy seguro de que remake es lo que estás buscando.

Desde la página principal:

nueva versión es una versión parcheada y modernizado de GNU make utilidad que añade mejoró el informe de errores, la capacidad de rastrear la ejecución de un modo comprensible, y un depurador.

Tiene una interfaz similar a BGF y es apoyado por MDB-mode en emacs (x) lo que significa breakponts, relojes, etc. Y no es DDD si no te gusta (x) emacs

+0

Si pudiera, agregaría +100. Al utilizar remake ('brew install remake' para la instalación), el problema que tuve que depurar simplemente desapareció. No tengo idea de cuál es el problema, pero ¿a quién le importa? :) – ishahak

10

Desde el página del manual en que las opciones de línea de comandos:

-n, --just-print, --dry-run, --recon 
Print the commands that would be executed, but do not execute them. 

-d Print debugging information in addition to normal processing. 
The debugging information says 
which files are being considered for remaking, 
which file-times are being compared and with what results, 
which files actually need to be remade, 
which implicit rules are considered and which are applied--- 
everything interesting about how make decides what to do. 

--debug[=FLAGS] Print debugging information in addition to normal processing. 
If the FLAGS are omitted, then the behaviour is the same as if -d was specified. 
FLAGS may be: 
'a' for all debugging output same as using -d, 
'b' for basic debugging, 
'v' for more verbose basic debugging, 
'i' for showing implicit rules, 
'j' for details on invocation of commands, and 
'm' for debugging while remaking makefiles. 
0

Hay un proyecto depurador GNU hacer por lo http://gmd.sf.net que parece bastante útil. La principal característica admitida por gmd es la detección de fallas, que puede ser más útil que el paso. Para usar esto, descargue gmd desde http://gmd.sf.net y gmsl desde http://gmsl.sf.net, y haga un 'include gmd' en su archivo MAKE.

Cuestiones relacionadas