2008-09-10 2 views
46

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

ответ

48

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

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

Вы посмотрели бесплатную главу на странице Debugging Makefiles на сайте O'Reilly за отличную книгу «Управление проектами с помощью GNU Make» (Amazon Link).

3

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

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

+0

или `-p` как псевдоним – sercxjo 2016-04-13 20:26:21

20

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

На главной странице:

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

Он имеет GdB-подобный интерфейс и поддерживает MDB-режиме в (х), то Emacs, что означает breakponts, часы и т.д. И есть DDD, если вам не нравится (х) Emacs

+0

Если бы я мог добавить +100. При использовании римейка ('brew install remake' для установки) проблема, которую я должен был отлаживать, просто DISAPPEARED. Не знаю, в чем проблема, но кого это волнует? :) – ishahak 2015-03-11 14:57:21

10

С человек страница на замыкающие параметры командной строки:

-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. 
0

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