Как мне заставить g_print () появляться?

Я только что унаследовал библиотеку от кого-то, кто покинул компанию. Он написан на C ++, а g_print () используется во всем коде. Я знаю, что библиотека работает, но я не вижу никакой отладочной информации. Есть ли что-то, что мне нужно сделать, чтобы это появилось? G_print () работает только в отладочных сборках? Любые другие предложения?

0

Решение

Я закончил тем, что использовал g_log (как предложено Дэвид Шварц выше), а затем переопределить его, как указано в C — gtk Logging overriding:

void log_handler(const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
gpointer user_data)
{
FILE *logfile = fopen ("/tmp/debug.log", "a");
if (logfile == NULL)
{
/*  Fall  back  to  console  output  if  unable  to  open  file  */
printf ("Rerouted to console: %s", message);
return;
}

fprintf (logfile, "%s", message);
fclose (logfile);
}

uint handlerid = g_log_set_handler(NULL,
G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
log_handler,
NULL);

if (!g_main_loop_is_running())
{
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, "g_main_loop_is_running() returned 0\n");
}

if (handlerid != 0)
{
g_log_remove_handler(NULL, handlerid);
handlerid = 0;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]