情况:
我正在工作场所升级一些代码。该代码适用于基于 GMime 的进程。我们目前使用 GMime 2.2,我最近升级了我们的代码以使用 GMime 2.4。过程运行得很好,没有崩溃,但我得到了
GLib-GObject-CRITICAL **: g_object_unref: assertion G_IS_OBJECT (object)' failed
程序运行时时不时地。
有时调用 g_object_unref 会失败并使我的程序崩溃。我正在尝试对此进行调试,但不幸的是,制作此程序的人没有添加任何测试或调试功能。
当您必须返回旧代码时,我知道并理解嵌入调试信息或设置测试框架的重要性。我知道如何在纯 C 或纯 C++ 中设置它,但是一旦其他库被扔进去,它就变得非常困难。
我的问题是:
如何使用依赖 GLib 或 GObject 的程序有效地设置调试代码和/或测试系统?
我的问题是:
- 我怎样才能知道代码中发生了什么?我应该听“信号”吗?如何设置这些信号?
g_object_unref
return之类的函数void
。既然如此,我该如何输出与这些功能相关的调试信息呢?- GObject 是否有“属性/类成员”,我不知道与 GLib 相关的正确术语,其中嵌入了错误信息?
(相关,但稍微偏离主题)像 GLib 和 node.js 等库有“广泛”的文档,相当于:
function doSomethingThatShouldBeUsefulAndUnderstoodByAnyoneWhoReadsThis(WYSIWYG, FIY, BYOF, X, Y, Z) // this function does something that should be usefull and understood by anyone who reads the function this does something and can be called
当大多数教程将您引回文档或者文档本身时,一个人如何拥有大量编程经验(使用纯语言形式),如何在库中做出正面或反面?
有推荐的教程吗?
我看过的网站:
- http://arunchaganty.wordpress.com/2008/05/18/i-am-a-gobject/
- 创建并发出 gtk 信号
- https://developer.gnome.org/glib/2.28/glib-running.html
- https://developer.gnome.org/gtk-tutorial/2.90/a2901.html
- https://developer.gnome.org/gobject/unstable/gobject-Signals.html
非常感谢任何和所有的意见、问题和建议!
谢谢你。