| |
| Справочное описание 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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |