Мы храним все связанное с приложением в нашем SCM. Сценарии DB обычно хранят в их собственном проекте, но рассматривают точно так же, как любой другой код... разрабатывают, реализуют, тестируют, фиксация.
#include <stdio.h>
#include <stdlib.h>
/* My approach is to count the length of the string required. And do a single alloc.
Sure you can allocate more, but I don't know for how long this data will be retained.
*/
#define LEN(a) (sizeof a / sizeof *a)
int main(void) {
unsigned a[] = {1, 23, 45, 523, 544};
int i, str_len=0, t_written=0;
char tmp[11]; /* enough to fit the biggest unsigned int */
for(i = 0; i < LEN(a); i++)
str_len += sprintf(tmp, "%d", a[i]);
/* total: we need LEN(a) - 1 more for the ',' and + 1 for '\0' */
str_len += LEN(a);
char *str = malloc(str_len);
if (!str)
return 0;
if (LEN(a) > 1) {
t_written += sprintf(str+t_written, "%d", a[0]);
for(i = 1; i < LEN(a); i++)
t_written += sprintf(str+t_written, ",%d", a[i]);
} else if (LEN(a) == 1)
t_written += sprintf(str+t_written, "%d", a[0]);
printf("%s\n", str);
free(str);
return 0;
}
a
для всей отладки (так же, как make -d
и make --debug
). b
для базовой отладки. v
для немного более подробной базовой отладки. i
для неявных правил. j
для информации о вызове. m
для информации во время переделки make-файла. Похоже, например make --debug = b
- лучший вариант для того, что вам нужно, как показано в следующей расшифровке:
pax@paxbox> cat makefile
c:a b
touch c
pax@paxbox> touch a b ; make
touch c
pax@paxbox> make
make: 'c' is up to date.
pax@paxbox> touch a ; make --debug=b
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc. Blah, blah, blah.
Reading makefiles...
Updating goal targets....
Prerequisite 'a' is newer than target 'c'.
Must remake target 'c'.
touch c
Successfully remade target file 'c'.
Вы ищете пробную версию Make? Он распечатает, что делает make, не делая этого на самом деле, что позволит вам увидеть, что происходит.
Флаг -n
, используйте его как make -n
.
Ваш вопрос немного неясен. Если вы хотите узнать, какие файлы предварительных требований не изменялись в последнее время, используйте команду ls -l, чтобы узнать время их изменения. Если вы хотите увидеть, что делает make, попробуйте следующее:
# Make will announce when it is making this target, and why. sometarget: preq1 preq2 preq3 @echo making $@ @echo The following preqs are newer than the target: $? do_things
Также есть GNU make с отладчиком и улучшенным выводом трассировки / ошибок: Remake
screencast: http://showmedo.com/videotutorials/video?name= linuxBernsteinMakeDebug1 и fromSeriesID = 40