81 votes

Outil de débogage des makefiles

J'ai un grand héritage de la base de code avec de très compliqué makefiles, avec beaucoup de variables. Parfois j'ai besoin de les changer, et je trouve que c'est très difficile de comprendre pourquoi le changement n'est pas sur le même chemin que j'attends. Ce que je voudrais savoir est un outil qui ne fait étape-par-débogage du "faire", où je voudrais lui donner un répertoire, et je voudrais être en mesure de voir la valeur des différentes variables à différents points dans le processus. Aucun des indicateurs de débogage pour faire semblent montrer moi ce que je veux, même si c'est possible qu'il me manque quelque chose. Personne ne sait d'une façon de le faire?

75voto

Rob Wells Points 21714

Avez-vous examiné le résultat de make -n et make -np, et du plus gros make -nd?

Utilisez-vous une version assez récente de gmake?

Avez-vous consulté le chapitre gratuit sur le débogage de Makefiles disponible sur le site de O'Reilly pour son excellent livre "Gestion de projets avec GNU Make" ( Amazon Link ).

36voto

Rajish Points 2419

Je suis sûr que le remake est ce que vous cherchez.

À partir de la page d'accueil:

le remake est une version modifiée et modernisée version de GNU make utilitaire qui ajoute amélioré les rapports d'erreurs, la capacité à suivre l'exécution d'une manière compréhensible, et un débogueur.

Il a gdb-comme l'interface et est pris en charge par mdb-mode (x)emacs, ce qui signifie breakponts, montres, etc. Et il y a DDD si vous n'aimez pas (x)emacs

22voto

GuruM Points 416

Depuis la page de manuel sur les options de ligne de commande de make:

 -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.  
 

5voto

argv0 Points 502

Je ne suis au courant d'aucun drapeau spécifique qui fasse exactement ce que vous voulez, mais

 --print-data-base 
semble que cela pourrait être utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X