gpt4 book ai didi

导致 Gtk 在断言时中止

转载 作者:太空狗 更新时间:2023-10-29 17:05:37 26 4
gpt4 key购买 nike

我必须调试一个严重依赖 Gtk 的程序。问题是由于某些原因,在使用 GtkWindow 对象时开始出现许多运行时警告。问题是,即使 Gtk 提示严重错误,它也不会因这些错误而中止。我没有代码库的更改历史记录,所以我唯一的选择似乎是遍历所有似乎可疑的 gtk 调用并查看问题出在哪里。但是,如果我能以某种方式导致 Gtk 因这个错误而中止,我可以用 gdb 运行它并尝试获取回溯并找到错误的确切位置。知道如何做到这一点吗?

GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject'
GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject'
GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed
GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GObject'
GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)' failed

最佳答案

我正在收集 Matt 提到的方法和我发现的方法以在此处提供完整的答案。我会将其标记为已选择的答案并对 Matt 的答案投赞成票。

强制 gtk 在出错时进行 agort 的三种方法:

  1. G_DEBUG=fatal_warnings ./myprog ...
  2. ./myprog -prog-args --g-fatal-warnings
  3. 使用 g_log_set_handler 和/或 g_log_default_handler 并提供您自己设计的 GLogFunc,它根据为每条消息传递给它的 GLogLevelFlags 中止。

我还应该提到 g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING); 以使列表完整,即使“总是致命”不是我想要的。

关于导致 Gtk 在断言时中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com