Как отследить цели Makefile для устранения неполадок?

У нас есть длинный и сложный Makefile в нашей системе сборки. Есть хороший способ отследить, какие цели выполняются для данного вызова make?

Ответы на вопрос(2)

Решение Вопроса

make -d или жеmake --debug[=flags] опции:

‘-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. The -d option is equivalent to ‘--debug=a’ (see below).

‘--debug[=options]’

Print debugging information in addition to normal processing. Various levels and types of output can be chosen. With no arguments, print the “basic” level of debugging. Possible arguments are below; only the first character is considered, and values must be comma- or space-separated.

a (all) All types of debugging output are enabled. This is equivalent to using ‘-d’.

b (basic) Basic debugging prints each target that was found to be out-of-date, and whether the build was successful or not.

v (verbose) A level above ‘basic’; includes messages about which makefiles were parsed, prerequisites that did not need to be rebuilt, etc. This option also enables ‘basic’ messages.

i (implicit) Prints messages describing the implicit rule searches for each target. This option also enables ‘basic’ messages.

j (jobs) Prints messages giving details on the invocation of specific subcommands.

m (makefile) By default, the above messages are not enabled while trying to remake the makefiles. This option enables messages while rebuilding makefiles, too. Note that the ‘all’ option does enable this option. This option also enables ‘basic’ messages.

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

ElectricMake может сгенерировать размеченную XML-версию вашего журнала сборки с большим количеством информации, которая поможет в этой ситуации:

those that were marked as "silent" commands with the @ modifier). The origin (makefile and line number) of the commands invoked. Runtime of the commands. Dependency relationships between the targets in the build. Structural relationship between targets and recursive makes in the build. Files read/written by the commands invoked in the build.

Вот пример этого вывода:

<job id="J0824ab08" thread="5e72bb0" node="linbuild1-2" type="rule" name="../../i686_Linux/testmain/testmain.d" file="../config/rules.mak" line="109">
<command line="110">
<argv>echo Rebuilding '../../i686_Linux/testmain/testmain.d'</argv>
<output src="prog">Rebuilding ../../i686_Linux/testmain/testmain.d
</output>
</command>
<command line="111-114">
<argv>set -e; g++ -MM -w  -DUSE_PROFILING -DUSE_LOGGING -DHAVE_UNIX -DHAVE_LINUX -I.. testmain.cpp \
        | sed 's!\(testmain\)\.o[ :]*!../../i686_Linux/testmain/\1.o '../../i686_Linux/testmain/testmain.d' : !g' \
        &gt; '../../i686_Linux/testmain/testmain.d'; \
        [ -s '../../i686_Linux/testmain/testmain.d' ] || touch '../../i686_Linux/testmain/testmain.d'</argv>
</command>
<opList>
<op type="read" file="/home/ericm/src/testmain/testmain.cpp"/>
<op type="read" file="/home/ericm/src/minidumper/ExceptionReport.h"/>
<op type="read" file="/home/ericm/src/util/ECAssert.h"/>
<op type="create" file="/home/ericm/i686_Linux/ecloud/testmain/testmain.d" found="0"/>
</opList>
<timing invoked="1.919926" completed="3.600491" node="linbuild1-2"/>
<waitingJobs idList="J0824ae38"/>
</job>

Как быстро перемещаться по незнакомому Makefile показывает пример использования аннотированного журнала сборки, чтобы найти путь к make-файлу.

Data Mining ElectricAccelerator Аннотация показывает, как вы можете использовать аннотированный журнал сборки для составления спецификации для сборки.

ElectricMake совместим с GNU Make, поэтому он может обрабатывать make-файлы, которые работают с GNU make.

Disclaimer: I'm the architect and lead developer of ElectricAccelerator.

 09 янв. 2019 г., 15:29
Привет, Эрик! Я не смог найти электромобиля или спарк-билда в Интернете. Разве у вас нет бесплатного варианта попробовать эти инструменты?
 09 янв. 2019 г., 23:57
@ SFbay007 Electric Make является компонентом ElectricAccelerator. Ссылка в моем ответе приведет вас на страницу продукта для ElectricAccelerator, и оттуда вы сможете скачать пробную версию. Здесь снова ссылка:electric-cloud.com/products/electricaccelerator
 08 июн. 2012 г., 03:48
Привет, Эрик! Я - электрический производитель. Приятно видеть, что вы пишете. Количество отладочных журналов и опций, встроенных в emake, довольно ошеломляет. Отличный продукт, рекомендую.

Ваш ответ на вопрос