Инструмент для отладки make-файлов - PullRequest
59 голосов
/ 10 сентября 2008

У меня есть большая устаревшая кодовая база с очень сложными make-файлами, с большим количеством переменных. Иногда мне нужно их изменить, и я обнаруживаю, что очень трудно понять, почему это изменение не работает так, как я ожидаю. То, что я хотел бы найти, - это инструмент, который в основном выполняет пошаговую отладку процесса «make», где я бы дал ему каталог, и я мог бы видеть значение различных переменных в разных точках в процесс. Кажется, ни один из флагов отладки не показывает мне, чего я хочу, хотя возможно, что я что-то упускаю. Кто-нибудь знает способ сделать это?

Ответы [ 5 ]

61 голосов
/ 10 сентября 2008

Вы смотрели на результат работы make -n и make -np, и biggie make -nd?

Вы используете довольно свежую версию gmake?

Вы посмотрели бесплатную главу Отладка Makefile , доступную на сайте O'Reilly, для их превосходной книги "Управление проектами с помощью GNU Make" ( Amazon Link ).

30 голосов
/ 24 ноября 2008

Я уверен, что римейк - это то, что вы ищете.

С домашней страницы:

римейк - это исправленная и модернизированная версия утилиты GNU make, которая добавляет улучшенные отчеты об ошибках, возможность отслеживания выполнения понятным способом и отладчик.

Он имеет gdb-подобный интерфейс и поддерживается в режиме mdb в (x) emacs, который означает точки останова, часы и т. Д. А если вам не нравится (x) emacs * 1015, есть DDD

15 голосов
/ 20 марта 2013

На странице руководства по параметрам командной строки 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.  
4 голосов
/ 10 сентября 2008

Мне неизвестен какой-либо конкретный флаг, который делает именно то, что вы хотите, но

--print-data-base
звучит так, как будто это может быть полезно.
0 голосов
/ 14 августа 2014

Существует проект GNU make debugger на http://gmd.sf.net, который выглядит довольно полезным. Основной функцией, поддерживаемой gmd, является точка останова, которая может быть более полезной, чем пошаговая. Чтобы использовать это, вы скачиваете gmd из http://gmd.sf.net и gmsl из http://gmsl.sf.net, и делаете «include gmd» в вашем make-файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...