У меня есть большая устаревшая кодовая база с очень сложными make файлами с большим количеством переменных. Иногда мне нужно их менять, и я считаю, что очень сложно понять, почему изменение не работает так, как я ожидаю. То, что я хотел бы найти, - это инструмент, который в основном выполняет сквозную отладку процесса "make", где я бы дал ему каталог, и я смог бы увидеть значение разных переменных в разных точках обработать. Ни один из флагов отладки, кажется, не показывает мне, что я хочу, хотя возможно, что я чего-то не хватает. Кто-нибудь знает способ сделать это?
Инструмент для отладки make файлов
Ответ 1
Вы просматривали результаты работы make -n и make -np, а biggie make -nd?
Вы используете довольно недавнюю версию gmake?
Посмотрели ли вы свободную главу на Отладка Makefiles на сайте O'Reilly за отличную книгу "Управление проектами с помощью GNU Make" (Amazon Link).
Ответ 2
Я уверен, что remake - это то, что вы ищете.
На главной странице:
римейк - это исправленная и модернизированная версия утилиты GNU make, которая добавляет улучшенную отчетность об ошибках, возможность отслеживать выполнение в понятной форме и отладчик.
У этого есть gdb-подобный интерфейс и поддерживается mdb-mode в (x) emacs, который означает breakponts, часы и т.д. И там DDD если вам не нравится (x) emacs
Ответ 3
На странице man в параметрах командной строки:
-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
Я не знаю какого-либо конкретного флага, который делает именно то, что вы хотите, но
--print-data-baseзвучит так, как будто это может быть полезно.
Ответ 5
Существует проект отладчика GNU make от http://gmd.sf.net, который выглядит весьма полезным. Основной функцией, поддерживаемой gmd, является точка останова, которая может быть более полезна, чем степпинг. Чтобы использовать это, вы загружаете gmd из http://gmd.sf.net и gmsl из http://gmsl.sf.net, и выполните 'include gmd' в вашем файле makefile.