Когда я запускаю инструмент проверки потока helgrind (valgrind toolsuite), я вижу много ошибок в библиотеке glib. Я хочу подавить их.
Подавление файла является одним из вариантов. Но я нашел: Как использовать helgrind для отладки многопоточных приложений Qt. Это говорит о том, что я могу установить переменную среды QT_NO_GLIB равной 1, чтобы Qt не мог использовать Glib.
Пытался…
$ export QT_NO_GLIB=1
$ valgrind --tool=helgrind --log-file=helgrind.log ./app
$ grep -o 'g_[_a-z]*' helgrind.log
g_main_context_dispatch
g_main_loop_run
g_mutex_init
g_mutex_lock
g_object_new
...
$ env | grep QT_NO_GLIB
QT_NO_GLIB=1
.. Но журнал helgrind содержит много ссылок на функции Glib. Как я могу установить переменную среды QT_NO_GLIB? Я запускаю Ubuntu 13.04, используя Qt 4.8.3.
Вызовы Glib, которые вы видите, определенно не исходят из Qt. Вы можете убедиться в этом, скопировав исходный код Qt4.x из git http://code.qt.io/cgit/qt/qt.git/ и затем grep для «g_main_context_dispatch». Вы ничего не найдете. Это означает, что вызовы Glib поступают из некоторых сторонних плагинов или других зависимостей вашего бинарного файла.
Использование «export QT_NO_GLIB = 1» для отключения диспетчера событий Glib является правильным.
Других решений пока нет …