会社を辞めた人からライブラリを継承しました。これは C++ で書かれており、コード全体で g_print() が使用されています。ライブラリが実行されていることはわかっていますが、デバッグ出力が表示されません。それを表示させるために何かする必要がありますか?g_print() はデバッグ ビルドでのみ機能しますか? 他の提案はありますか?
質問する
2750 次
1 に答える
1
私は 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;
}
于 2012-12-06T01:17:41.443 に答える