anonymous
написал 6 августа 2005 года в 21:42 (3200 просмотров)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Как реализовать такую фичу :
в своей программе на си в разных ее местах я вставляю строку :
debug(«очередное сообщение», «mydebug.txt»);
и каждый раз , когда программа натыкается на эту строку , она добавляет
в конец файла mydebug.txt очередное сообщение
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Дык, сделай функцию, назови debug. Открывай в ней файл на append и пиши, что надо. Не понял вопроса…
Good Luck,
UT
могу поделиться классом с таким функционалом
Да я вроде уже накропал :
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»);
Я рекомендовал бы не открывать и закрывать файл постоянно, это все системные вызовы и может сильно замедлять работу, лучше сделать примерно так:
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)
тогда отладку можно очень легко отключить
Чего мучаться?
Пиши в stderr, и перенаправляй вывод в консольке (2>>debug.file).
после fprintf, стоит добавить fflush (debugfile), а то что-нибудь может и потеряться в недрах libc.
http://www.nixp.ru/cgi-bin/forum/YaBB.pl?board=trash;action=display;num=1124455527