| |
Справочное описание 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() ).
|
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |