禁用Qt中的Glib事件循环-Qt_NO_Glib未生效

Disable Glib event loop in Qt - QT_NO_GLIB not taking effect

本文关键字:Glib NO 未生效 -Qt 事件 Qt 中的 禁用 循环      更新时间:2023-10-16

当我运行线程检查工具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本身。您可以通过git克隆来自的Qt4.x源代码来验证http://code.qt.io/cgit/qt/qt.git/然后对"g_main_context_dispatch"执行grep。你什么也找不到。这意味着Glib调用来自一些第三方插件或二进制文件的其他依赖项。

使用"export QT_NO_GLIB=1"禁用GLIB事件调度程序是正确的。