The Official GNOME 2 Developer's Guide GLib (六)
Yu
posted @ 2011年9月02日 14:36
in The Official GNOME 2 Developer's Guide GLib
with tags
c gnome gtk
, 2252 阅读
1.4.7 调试功能
GLib有几个东西让你在你的程序中找到bug。其中有两个宏定义是返回普通的声明。除了中断退出程序以外,能还记录在G_LOG_LEVEL_CRITICAL中的消息。因此你可以在你程序有可能出现问题的地方使用他们:
g_return_if_reached() 记录一个重要的信息,用于没有返回值的函数。
g_return_val_if_reached(val) 记录一个重要的信息,用于有返回值的函数,返回val。
其他两个类似也很方便的宏:
g_return_if_fail(test)
g_return_val_if_fail(test, val)
如果test失败,记录消息在日志里面并返回。你可以在GNOME的函数里看到在开始的地方用来检查参数的有效性。
在基本的调试上有两个以上的宏被展开成——断言。断言是在一定的某些条件下必须保存程序中进程的任何状态:
g_assert() 如果程序的返回参数是FALSE时候,跟g_error()一样暂停程序。
g_assert_not_reached()不需要参数,只是简单的停止有错误消息的程序。
你会发现整本书和绝大部分的GNOME应用中使用断言。此外,绝大部分的GNOME平台库使用这些安全功能,防止不适当的参数被传入。
如果你的程序不是很长,你可以禁用任何断言,你能设置编译参数G_DISABLE_ASSERT这个宏就行了(例子:-DG_DISABLE_ASSERT)。禁用所有的断言可以节约一小点处理器的时间,因为消除了测试(消除测试。。窘。。我也不太懂。。。反正就是编译的时候,省略了一些东西,提高了速度)。