Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210355
  • 博文数量: 145
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-14 18:42
文章分类

全部博文(145)

文章存档

2011年(1)

2009年(144)

我的朋友

分类: LINUX

2009-07-22 19:02:29

by tangke <> 2009-06-02

现在我们为您的基于Qt的软件的调试提供一些有用的提示。
1命令行参数

当你运行Qt程序时,你可以指定几个命令行参数来帮助你调试。

  * -nograb 应用程序不再捕获鼠标或者键盘。当程序在Linux下运行在gdb调试器中时这个选项是默认的。
  * -dograb 忽略任何隐含的或明显得-nograb。即使-nograb出现在命令行的最后,-dograb也会超过-nograb生效的。
  * -sync 在X同步模式下运行应用程序。同步模式强迫X服务器立即执行每一个X客户端的请求,而并不能使用缓存优化。它使得程序更加容易测试并且通常会更慢。-sync模式只对X11版本的Qt有效。

2警告和调试消息

Qt包含了三个全局函数来写出警告和调试文本。

  * qDebug()用来为测试及其它写调试输出。
  * qWarning()用来在程序发生错误时写警告输出。
  * qFatal()用来写致命错误消息并且退出。

这些函数的Qt实现是在Unix/X11下把文本打印到标准错误(stderr)输出,在Windows下会打印到调试器。你可以通过安装一个消息处理器,qInstallMsgHandler()来接收这些函数。

当应用程序看起来或者用起来很奇怪的时候,调试函数QObject::dumpObjectTree()和QObject::dumpObjectInfo()很有用。如果你使用了对象名称,这将会更有用,但通常情况下是没有名称的。
3调试宏

qglobal.h头文件包含了很多调试宏和#defines。

两个重要的宏是:

  * Q_ASSERT(b)里面的b是一个布尔表达式,当b是FALSE的时候,写出警告信息:“ASSERT: 'b' in file file.cpp (234)”。
  * Q_CHECK_PTR(p)里面的p是一个指针。如果p是空的话,写出警告信息:“In file file.cpp, line 234: Out of memory”。

这些宏在检测程序错误时很有用,比如像这样:
阅读(319) | 评论(0) | 转发(0) |
0

上一篇:Qt 编程技巧

下一篇:commands:gtf

给主人留下些什么吧!~~