У меня есть большая устаревшая кодовая база с очень сложными 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.