0
我剛從一個離開公司的人那裏繼承了一個圖書館。它是用C++編寫的,在整個代碼中都使用g_print()。我知道庫正在運行,但我看不到任何調試輸出。我需要做些什麼才能讓它出現? g_print()只能在調試版本中工作嗎?還有其他建議嗎?如何讓g_print()出現?
我剛從一個離開公司的人那裏繼承了一個圖書館。它是用C++編寫的,在整個代碼中都使用g_print()。我知道庫正在運行,但我看不到任何調試輸出。我需要做些什麼才能讓它出現? g_print()只能在調試版本中工作嗎?還有其他建議嗎?如何讓g_print()出現?
我最終使用g_log(由上述David Schwartz所建議的),那麼重寫它作爲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;
}
我認爲這是油嘴的一部分? http://developer.gnome.org/glib/2.31/glib-Warnings-and-Assertions.html#g-print – parsley72
'g_print'僅用於調試輸出嗎?如果是這樣,請將其更改爲'g_message'。 (或者,如果你有時間,可以到'g_log'。) –
@ parsley72:糟糕 - 我錯過了'glib'標籤。對不起'回合。 –