在使用Glade3应用程序制作的Python 2.7 + GTK + 3 + PyGI + GUI中,我遇到了很多错误:
(python.exe:81868): Gdk-CRITICAL **: gdk_device_get_source: assertion 'GDK_IS_DEVICE (device)' failed
Python中没有异常发生,程序中没有任何错误。它们似乎是无害的,但为了清洁,我想阻止它们发生。
我注意到这种情况发生在例如激活和停用菜单项或更改组合框上的选择时。我试图设置一个回调,它对触发问题的事件没有任何作用,但没有改变。
那么,他们是什么意思?我怎么阻止他们?
答案 0 :(得分:2)
此类消息由使用Glib调试函数的代码发出,请参见[1],当断言失败时。这些断言由Glib和许多构建在Glib上的组件用于报告无效状态,无效参数等。
通常,此类消息暗示某个应用程序中存在错误,因此搜索原因是个好主意。为此,请使用适当的值导出G_DEBUG
环境,请参阅[2]。在您的情况下,您将设置G_DEBUG=fatal-criticals
,并且在发出关键消息时程序将中止。如果您随后在gdb
中运行应用程序并在程序中止时打印回溯,那么您应该知道导致消息发出的原因。请记住为glib和gtk / gdk安装debuginfo包以获得可用的回溯。
要禁用发出的消息,如果您无法解决问题(可能是因为原因不是您的代码,而是某些其他库),您可以查看g_log_set_handler
,参见[3] ]