У меня есть большая устаревшая кодовая база с очень сложными make-файлами с большим количеством переменных. Иногда мне нужно их менять, и я считаю, что очень сложно понять, почему изменение не работает так, как я ожидаю. То, что я хотел бы найти, - это инструмент, который в основном выполняет сквозную отладку процесса «make», где я бы дал ему каталог, и я смог бы увидеть значение разных переменных в разных точках обработать. Ни один из флагов отладки, кажется, не показывает мне, что я хочу, хотя возможно, что я что-то упустил. Кто-нибудь знает, как это сделать?Инструмент для отладки make-файлов
ответ
Вы смотрите на результаты работы make -n
и make -np
, а также на biggie make -nd
?
Вы используете довольно недавнюю версию gmake
?
Вы посмотрели бесплатную главу на странице Debugging Makefiles на сайте O'Reilly за отличную книгу «Управление проектами с помощью GNU Make» (Amazon Link).
Я не знаю какого-либо определенного флага, который делает именно то, что вы хотите, но
--print-data-baseзвучит, как будто это может быть полезно.
Я уверен, что remake - это то, что вы ищете.
На главной странице:
римейк является исправленным и модернизированным вариантом GNU сделать утилиту, которая добавляет улучшенные отчеты об ошибках, способность отслеживать исполнение в доступной форме, и отладчик.
Он имеет GdB-подобный интерфейс и поддерживает MDB-режиме в (х), то Emacs, что означает breakponts, часы и т.д. И есть DDD, если вам не нравится (х) Emacs
Если бы я мог добавить +100. При использовании римейка ('brew install remake' для установки) проблема, которую я должен был отлаживать, просто DISAPPEARED. Не знаю, в чем проблема, но кого это волнует? :) – ishahak 2015-03-11 14:57:21
С человек страница на замыкающие параметры командной строки:
-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.
Существует гну сделать отладчик проекта в http://gmd.sf.net который выглядит весьма полезным. Основной функцией, поддерживаемой gmd, является точка останова, которая может быть более полезна, чем степпинг. Чтобы использовать это, вы загружаете gmd из http://gmd.sf.net и gmsl из http://gmsl.sf.net и делаете «включить gmd» в свой файл makefile.
или `-p` как псевдоним – sercxjo 2016-04-13 20:26:21