Справочное описание GLib | ||||
---|---|---|---|---|
Вывод сообщений и функции отладкиMessage Output and Debugging Functions — Функции для вывода сообщений и помощь отладки приложений. |
#include <glib.h>
void g_print (const gchar *format,
...);
GPrintFunc g_set_print_handler (GPrintFunc func);
void (*GPrintFunc) (const gchar *string);
void g_printerr (const gchar *format,
...);
GPrintFunc g_set_printerr_handler (GPrintFunc func);
#define g_return_if_fail (expr)
#define g_return_val_if_fail (expr,val)
#define g_return_if_reached ()
#define g_return_val_if_reached (val)
#define g_assert (expr)
#define g_assert_not_reached ()
void g_on_error_query (const gchar *prg_name);
void g_on_error_stack_trace (const gchar *prg_name);
#define G_BREAKPOINT ()
void g_print (const gchar *format,
...);
Вывод форматированных сообщений через обработчик печати. По умолчанию обработчик печати просто выводит сообщения на стандартный вывод (stdout).
g_print()
не должна использоваться внутри библиотеки для отладочных сообщений,
так как они могут переадресовываться приложениями в специальные окна сообщений или даже в файлы.
Вместо неё библиотека должна использовать g_log()
, или удобные функции
g_message()
, g_warning()
и g_error()
.
format : |
форматированное сообщение. Смотрите
документацию.
|
... : |
параметры для вставки в форматированную строку. |
GPrintFunc g_set_print_handler (GPrintFunc func);
Устанавливает обработчик печати.
Любые сообщения помещаемые в g_print()
будут выводиться через новый обработчик.
Обработчик по умолчанию просто выводит сообщения на stdout.
Обеспечивая собственный обработчик вы можете перенаправить вывод, например в виджет GTK+
или файл журнала.
func : |
новый обработчик печати. |
Возвращает : | старый обработчик печати. |
void (*GPrintFunc) (const gchar *string);
Определяет тип функции обработчика печати. Их вызывают для вывода полностью отформатированной строки на output.
string : |
сообщение для вывода. |
void g_printerr (const gchar *format,
...);
Выводит отформатированные сообщения через обработчик сообщений об ошибках. По умолчанию обработчик просто выводит сообщения на stderr.
g_printerr()
не должна использоваться внутри библиотеки. Вместо неё используйте g_log()
, или удобные функции g_message()
, g_warning()
и g_error()
.
format : |
отформатированное сообщение. Смотрите документацию для .
|
... : |
параметры для вставки в форматированную строку. |
GPrintFunc g_set_printerr_handler (GPrintFunc func);
Устанавливает обработчик для печати сообщений об ошибках.
Любые сообщения помещённые в g_printerr()
будут выводиться через новый обработчик.
Обработчик по умолчанию просто выводит сообщения на stderr.
Обеспечивая собственный обработчик вы можете перенаправить вывод, например в виджет GTK+
или файл журнала.
func : |
новый обработчик сообщений об ошибках. |
Возвращает : | старый обработчик сообщений об ошибках. |
#define g_return_if_fail(expr)
Возвращается из текущей функции если выражение не верно.
Если выражение вычисляет FALSE
, регистрируется критическое сообщение и функция возвращается. Это может использоваться только в функциях которые не возвращают значение.
expr : |
выражение для проверки. |
#define g_return_val_if_fail(expr,val)
Возвращается из текущей функции, возвращая значение val
, если выражение не верно.
Если выражение вычисляет FALSE
, регистрируется критическое сообщение и возвращается val
.
expr : |
выражение для проверки. |
val : |
значение возвращаемое из текущей функции если выражение не верно. |
#define g_return_if_reached()
Регистрирует критическое сообщение и возвращается из текущей функции. Это используется только в функциях которые не возвращают значений.
#define g_return_val_if_reached(val)
Регистрирует критическое сообщение и возвращает val
.
val : |
значение возвращаемое из текущей функции. |
#define g_assert(expr)
Отладочный макрос для завершения приложения если выражение неправильно. Если выражение неправильно (то есть логическое выражение не верно), регистрируется сообщение об ошибке и приложение закрывается.
Макрос можно отключить в завершающем релизе определив G_DISABLE_ASSERT при компиляции приложения.
expr : |
проверяемое выражение. |
#define g_assert_not_reached()
Отладочный макрос для прекращения выполнения приложения при его достижении. Если он достигнут, регистрируется сообщение об ошибке и приложение закрывается.
Макрос можно отключить при окончательной реализации с помощью определения G_DISABLE_ASSERT при компиляции приложения.
void g_on_error_query (const gchar *prg_name);
Подсказка ввода для пользователя [E]xit, [H]alt, показать [S]tack trace или [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)
.
Если выбрано [H]alt, приложение входит в бесконечный цикл.
Бесконечный цикл можно остановить только уничтожив приложение,
или установив glib_on_error_halt в FALSE
(возможно через отладчик).
Если выбрано [S]tack trace, вызывается g_on_error_stack_trace()
. Это вызывает
gdb, который присоединяется к текущему процессу и показывает распечатку стека (stack trace).
Подсказка ввода показывается снова.
Если выбрано [P]roceed, функция завершается возвращением.
Эта функция может вызвать разные действия на не-UNIX платформах.
prg_name : |
имя программы, необходимо отладчику gdb для опции распечатки стека ([S]tack trace option).
Если prg_name равно NULL , g_get_prgname() вызывается для получения имени
программы (которая будет работать правильно если вызваны gdk_init()
или gtk_init() ).
|
void g_on_error_stack_trace (const gchar *prg_name);
Вызывает gdb, который присоединяется к текущему процессу и показывает распечатку стека.
Вызывается функцией g_on_error_query()
когда выбрана опция [S]tack trace.
Эта функция может выполнять разные действия на не-UNIX платформах.
prg_name : |
имя програмы, нужно отладчику gdb для опции распечатки стека ([S]tack trace option).
Если prg_name равно NULL , g_get_prgname() вызывается для получения имени программы (которая будет правильно работать если вызваны gdk_init() или gtk_init() ).
|