当我运行线程检查工具helgrind(valgrind toolsuite)时,我在glib库中看到很多错误。我想压制那些。

禁止文件是一种选择。但是我发现:How to use helgrind to debug multithreaded Qt applications。这表明我可以将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环境变量?我正在使用Qt 4.8.3运行Ubuntu 13.04。

最佳答案

您看到的Glib调用绝对不是来自Qt。您可以通过git从http://code.qt.io/cgit/qt/qt.git/克隆Qt4.x源代码,然后对“g_main_context_dispatch”使用grep进行克隆来验证这一点。你什么也找不到。这意味着Glib调用来自某些第三方插件或二进制文件的其他依赖项。

使用“export QT_NO_GLIB = 1”禁用Glib事件分派(dispatch)器是正确的。

关于c++ - 在Qt中禁用Glib事件循环-QT_NO_GLIB不生效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17875736/

10-10 22:16