nixp.ru v3.0

25 мая 2017,
четверг,
17:30:46 MSK

DevOps с компанией «Флант»
anonymous написал 6 августа 2005 года в 21:42 (602 просмотра) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Как реализовать такую фичу :

в своей программе на си в разных ее местах я вставляю строку :

debug(«очередное сообщение», «mydebug.txt»);

и каждый раз , когда программа натыкается на эту строку , она добавляет

в конец файла mydebug.txt очередное сообщение

Uncle Theodore

Дык, сделай функцию, назови debug. Открывай в ней файл на append и пиши, что надо. Не понял вопроса…

Good Luck,

UT

decvar

могу поделиться классом с таким функционалом

anonymous

Да я вроде уже накропал :

void debug(char *str,int cislo,char * type_open)

{

FILE * debugfile=fopen(«debug.!»,type_open);

fprintf(debugfile,"%s %d\n»,str,cislo);

fclose(debugfile);

}

debug(«create» ,0,«w»);

debug(«add» ,0,«a»);

metal

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

void debug(char *str,int cislo,char * type_open)

{

static FILE * debugfile=NULL;

if( debugfile==NULL)

{

debugfile=fopen(«debug.!»,type_open);

}

fprintf(debugfile,"%s %d\n»,str,cislo);

}

и вообще лучще не вызывать на прямую эту функцию, а делать это через макрос:

#define LOG_DEBUG(a,b,c) debug(a,b,c)

тогда отладку можно очень легко отключить

MedVed

Чего мучаться?

Пиши в stderr, и перенаправляй вывод в консольке (2>>debug.file).

rgo
metal
Я рекомендовал бы не открывать и закрывать файл постоянно, это все системные вызовы и может сильно замедлять работу, лучше сделать примерно так:

void debug(char *str,int cislo,char * type_open)

{

static FILE * debugfile=NULL;

if( debugfile==NULL)

{

debugfile=fopen(«debug.!»,type_open);

}

fprintf(debugfile,"%s %d\n»,str,cislo);

}

и вообще лучще не вызывать на прямую эту функцию, а делать это через макрос:

#define LOG_DEBUG(a,b,c) debug(a,b,c)

тогда отладку можно очень легко отключить

после fprintf, стоит добавить fflush (debugfile), а то что-нибудь может и потеряться в недрах libc.

decvar

http://www.nixp.ru/cgi-bin/forum/YaBB.pl?board=trash;action=display;num=1124455527