Справочное описание GLib |
---|
Выполнение GLib приложенияRunning GLib Applications — Как выполнять и отлаживать GLib приложение |
GLib проверяет несколько переменных окружения в дополнение к стандартным
переменным таких как LANG
, PATH
или HOME
.
G_FILENAME_ENCODING
.
Эта переменная окружения может определять разделённый запятыми список имён
наборов символов. GLib предполагает что имена файлов находятся в кодировке первого набора
символов в этом списке вместо UTF-8. Специальная лексема "@locale" может использоваться
для определения набора символов текущей локали (locale).
G_BROKEN_FILENAMES
.
Если эта переменная окружения установлена, GLib предполагает что имена файлов находятся в
кодировке локали (locale) вместо UTF-8. G_FILENAME_ENCODING имеет приоритет над
G_BROKEN_FILENAMES.
G_MESSAGES_PREFIXED
.
Список регистрационного уровня для которого сообщения должны быть предустановленны
именем программы и PID приложения. По умолчанию с префиксом все кроме
G_LOG_LEVEL_MESSAGE
и
G_LOG_LEVEL_INFO
.
G_DEBUG
.
Если GLib сконфигурирована с --enable-debug=yes
,
эта переменная может быть установлена в список отладочных опций, которые заставят GLib
печатать различную отладочную информацию.
fatal_warnings | Заставит GLib прервать программу при первом вызове g_warning() или g_critical(). Особенность опции в том, что не требуется конфигурация GLib с поддержкой отладки. |
fatal_criticals | Заставит GLib прервать программу при первом вызове g_critical(). Особенность опции в том, что не требуется конфигурация GLib с поддержкой отладки. |
gc-friendly | Вновь распределенная память которая непосредственно не инициализирована, также как освобождаемая память будет сброшена в 0. Позволяет проверочным программам памяти и подобным программам использующим алгоритмы подобные GC (сборщик мусора) произвести более точные результаты. Особенность опции в том, что не требуется конфигурация GLib с поддержкой отладки. |
resident-modules | Все модули загруженные GModule будут сделаны постоянно находящимися в оперативной памяти. Это может быть полезно при отслеживании утечек памяти в модулях которые загружаются позже; но это может также скрыть ошибки когда к коду обращаются после обычной выгрузки модуля. Особенность опции в том, что не требуется конфигурация GLib с поддержкой отладки. |
bind-now-modules | Все модули загруженные GModule свяжут свои идентификаторы во время загрузки, даже когда код использует %G_MODULE_BIND_LAZY. Особенность опции в том, что не требуется конфигурация GLib с поддержкой отладки. |
G_SLICE
.
Эта переменная окружения позволяет переконфигурировать #GSlice
программу распределения памяти (memory allocator).
always-malloc | Это заставит все участки распределённые через g_slice_alloc() и освобожденные с помощью g_slice_free1() фактически распределяться непосредственно через вызовы g_malloc() и g_free(). Позволяет проверочным программам памяти и подобным программам использующим алгоритмы подобные GC (сборщик мусора) произвести более точные результаты. Может также связать с отладочной особенностью реализации системы malloc такой как glibc's MALLOC_CHECK_=2 для отладки кода ошибочно распределенных участков. |
G_RANDOM_VERSION
.
Если эта переменная установлена в '2.0', будут использоваться
устаревшие алгоритмы генерирования псевдо-случайных чисел из
GLib-2.0 вместо улучшенных новых. Используйте GLib-2.0
алгоритмы только если вы генерировали последовательность чисел с помощью
Glib-2.0 которую вам нужно воспроизвести в точности.
LIBCHARSET_ALIAS_DIR
.
Позволяет специфичное не стандартное расположение для
charset.aliases
файла который используется
подпрограммами конвертации наборов символов. По умолчанию расположение определяет
libdir
во время компиляции.
G_WIN32_PRETEND_WIN9X
.
Установка этой переменной в любое значение заставит g_win32_get_windows_version()
возвращать версию кода для Windows 9x. Это главным образом для внутренней
отладки GTK+ и GLib, позволяет разработчикам проверить код для Windows 9x.
Некоторые части кода содержат переменные "ловушки" которые могут быть установлены во время отладки
если GLib сконфигурирована с --enable-debug=yes
.
Такие "ловушки" приводят к непосредственной остановки кода для исследования
текущего состояния программы и отслеживания (backtrace).
В настоящее время существуют следующие переменные "ловушки":
static volatile gulong g_trap_free_size;
static volatile gulong g_trap_realloc_size;
static volatile gulong g_trap_malloc_size;
Если установлен размер > 0, g_free(),
g_realloc() и
g_malloc() будут прерваны, если размер
будет соответствовать размеру блока памяти. Это работает только с
g_mem_set_vtable (glib_mem_profiler_table)
во время старта,
потому что профиль памяти требует соответствия в размерах блоков памяти.
Помните что многие современные отладчики поддерживают условные точки остановки, которые выполняют аналогичные функции. Например в gdb, вы можете сделать следующее
break g_malloc
condition 1 n_bytes == 20
для остановки только в g_malloc() вызове где размер распределяемого блока равен 20.