Подтвердить что ты не робот

Инструмент для отладки make файлов

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

4b9b3361

Ответ 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.