#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 trace”,则调用g_on_error_stack_trace()。printf输出格式 这将调用gdb,该gdb附加到当前进程并显示堆栈跟踪。 该提示然后再次显示。
如果选择“[P] roceed”,则函数返回。
此功能可能会在非UNIX平台上导致不同的操作。
参数
prg_name
程序名称,gdb为“[S]追踪”选项所需。 如果prg_name为NULL,则调用g_get_prgname()以获取程序名(如果已调用gdk_init()或gtk_init(),则程序名将正确运行)
调用gdb,它附加到当前进程并显示堆栈跟踪。 当选择“[S]追踪”选项时,由g_on_error_query()调用。 您可以使用g_get_prgname()来获取当前进程的程序名,假设您调用了gtk_init()或gdk_init()。
此功能可能会在非UNIX平台上导致不同的操作。
参数
prg_name
程序名称,gdb为“[S]追踪”选项所需
在代码中插入一个断点指令。
在x86和alpha系统上,这是作为一个软中断来实现的,而在其他的体系结构中,它会产生一个SIGTRAP信号。
下面给出一个例程,因为能力有限,有些函数没有完全掌握用法,所以没有提供例子
有些函数是需要glib结构才能有效
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-65911-2.html
怎么办
他的钱咋来的呢
收入低的男人也是男人