Debugowanie - makra?

0

Hej! Chciałabym spytać bardziej doświadczonych czy takie makro jest okey jeśli chodzi o debugowanie oraz czy muszę debug_print opakowywać w #ifdef DEBUG debug_print #endif ? ,bo zauważyłam, że gdy kompiluję bez #define DEBUG kod się kompiluje i też działa jednak nie wiem właśnie czy ta "pusta" funkcja debug_print wpływa wtedy w jakiś sposób na kod?

#include <stdio.h>
#define DEBUG

#ifdef DEBUG
#define debug_print(fmt, ...) \
	do { fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
			__LINE__, __func__, __VA_ARGS__); } while (0)
#else
#define debug_print(fmt,...)
#endif

int main(void) {
	const char *path = "/root/.bashrc";
	debug_print("%s %s\n","can't open:",path);
	return 0;
}

dopiero dzisiaj zaczęłam szukać czegoś lepszego i muszę teraz wszystko zmieniać ;. dlatego wolę zapytać może są jakieś lepsze sposoby. (dotychczas stosowałam zwykłe printf ;p)

0

Nie jest. Do debuggowania dobre sa narzedzia sluzace do debuggowania, czyli debuggery.

0

Jest ok. Nie musisz opakowywać wywołania makra w #ifdef #endif, bo w przypadku pustych makr nie jest generowany żaden kod (tak jakby tego w ogóle nie było).
Odnośnie tego, czy loggery się przydają - oczywiście! Często trzeba działać na platformie, do której ciężko podpiąć debugger. Z innych przykładów zastosowania - wykrywanie błędów wykonania, czy nawet błędów logicznych. Warto stosować loggery ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1