/** * Тест настройки категорий отладки из аргументов командной строки */ #include #include #include #include "../lib/debug_config.h" int main(int argc, char *argv[]) { printf("=== Тест настройки категорий из аргументов ===\n"); printf("Запуск с аргументами: "); for (int i = 0; i < argc; i++) { printf("%s ", argv[i]); } printf("\n\n"); // Инициализация отладки debug_config_init(); // Анализ аргументов командной строки int debug_categories = 0; // Если есть специфические категории, сначала отключаем все int has_specific_categories = 0; for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "--debug-etcp") == 0) { has_specific_categories = 1; } else if (strcmp(argv[i], "--debug-queue") == 0) { has_specific_categories = 1; } else if (strcmp(argv[i], "--debug-memory") == 0) { has_specific_categories = 1; } else if (strcmp(argv[i], "--debug-none") == 0) { has_specific_categories = 1; } } // Если есть специфические категории, отключаем все по умолчанию if (has_specific_categories) { debug_set_categories(DEBUG_CATEGORY_NONE); debug_categories = DEBUG_CATEGORY_NONE; } // Теперь обрабатываем аргументы for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "--debug-etcp") == 0) { debug_enable_category(DEBUG_CATEGORY_ETCP); debug_categories |= DEBUG_CATEGORY_ETCP; printf("✅ Включена категория ETCP\n"); } else if (strcmp(argv[i], "--debug-queue") == 0) { debug_enable_category(DEBUG_CATEGORY_LL_QUEUE); debug_categories |= DEBUG_CATEGORY_LL_QUEUE; printf("✅ Включена категория LL_QUEUE\n"); } else if (strcmp(argv[i], "--debug-memory") == 0) { debug_enable_category(DEBUG_CATEGORY_MEMORY); debug_categories |= DEBUG_CATEGORY_MEMORY; printf("✅ Включена категория MEMORY\n"); } else if (strcmp(argv[i], "--debug-all") == 0) { debug_set_categories(DEBUG_CATEGORY_ALL); debug_categories = DEBUG_CATEGORY_ALL; printf("✅ Включены все категории\n"); break; // Все категории уже включены } else if (strcmp(argv[i], "--debug-none") == 0) { debug_set_categories(DEBUG_CATEGORY_NONE); debug_categories = DEBUG_CATEGORY_NONE; printf("✅ Выключены все категории\n"); break; // Все категории уже выключены } else if (strcmp(argv[i], "--level") == 0 && i+1 < argc) { i++; if (strcmp(argv[i], "error") == 0) { debug_set_level(DEBUG_LEVEL_ERROR); printf("✅ Установлен уровень ERROR\n"); } else if (strcmp(argv[i], "info") == 0) { debug_set_level(DEBUG_LEVEL_INFO); printf("✅ Установлен уровень INFO\n"); } else if (strcmp(argv[i], "debug") == 0) { debug_set_level(DEBUG_LEVEL_DEBUG); printf("✅ Установлен уровень DEBUG\n"); } } } printf("\n=== Тестовые сообщения ===\n"); // Сообщения от разных категорий DEBUG_INFO(DEBUG_CATEGORY_ETCP, "Сообщение от ETCP категории"); DEBUG_INFO(DEBUG_CATEGORY_LL_QUEUE, "Сообщение от LL_QUEUE категории"); DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "Сообщение от MEMORY категории"); DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "Сообщение от CONNECTION категории"); DEBUG_INFO(DEBUG_CATEGORY_CRYPTO, "Сообщение от CRYPTO категории"); printf("\n=== Информация о текущих настройках ===\n"); printf("Активные категории: "); if (debug_categories & DEBUG_CATEGORY_ETCP) printf("ETCP "); if (debug_categories & DEBUG_CATEGORY_LL_QUEUE) printf("LL_QUEUE "); if (debug_categories & DEBUG_CATEGORY_MEMORY) printf("MEMORY "); if (debug_categories & DEBUG_CATEGORY_CONNECTION) printf("CONNECTION "); if (debug_categories & DEBUG_CATEGORY_CRYPTO) printf("CRYPTO "); if (debug_categories == DEBUG_CATEGORY_ALL) printf("ALL "); if (debug_categories == DEBUG_CATEGORY_NONE) printf("NONE "); printf("\n"); return 0; }