函数

GLibon_error_query

声明 [src]

void
g_on_error_query (
  const gchar* prg_name
)

描述 [src]

使用 [E]xit, [H]alt, show [S]tack trace or [P]roceed 提示用户。此函数仅用于调试。以下示例显示如何将它与 g_log() 函数结合使用。

#include <glib.h>

static void
log_handler (const gchar   *log_domain,
             GLogLevelFlags log_level,
             const gchar   *message,
             gpointer       user_data)
{
  g_log_default_handler (log_domain, log_level, message, user_data);

  g_on_error_query (MY_PROGRAM_NAME);
}

int
main (int argc, char *argv[])
{
  g_log_set_handler (MY_LOG_DOMAIN,
                     G_LOG_LEVEL_WARNING |
                     G_LOG_LEVEL_ERROR |
                     G_LOG_LEVEL_CRITICAL,
                     log_handler,
                     NULL);
  ...

如果选择 “[E]xit”,应用程序会通过调用 _exit(0) 终止。

如果选择 “[S]tack” 跟踪,则会调用 g_on_error_stack_trace()。这会调用 gdb,它会附加到当前进程并显示堆栈跟踪。然后提示将再次显示 。

如果选择 “[P]roceed”,函数会 返回。

此函数可能对非 UNIX 平台造成不同的影响。

在 Windows 中,请考虑使用 G_DEBUGGER 环境变量(请参见 运行 GLib 应用程序)并调用 g_on_error_stack_trace()

参数

prg_name

类型: const gchar*

程序名称,gdb 用于 “[S]tack trace” 选项。如果 prg_nameNULL,则会调用 g_get_prgname() 获取程序名称(如果已 调用 gdk_init()gtk_init(),则此操作会正常工作)。

数据归函数调用者所有。
值是 NULL 终结的 UTF-8 字符串。