Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108422
  • 博文数量: 39
  • 博客积分: 2032
  • 博客等级: 大尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-09 10:21
文章分类
文章存档

2011年(2)

2010年(22)

2009年(15)

我的朋友

分类: LINUX

2010-07-05 20:21:13

欢迎访问我的新博客TroyChengSpace:

最近在做的事情是优化Webkit内核在qt下的性能,需要手动编译Webkit和Qt的源代码(编译的过程见前面几篇日志),然后进行优化。在这个过程中遇到了一个不大不小的麻烦,在看源代码的时候我们都需要绘制调用关系图,但是在MeeGo系统上很多常用的工具都没有,用Vim+cTags+cscope看调用关系也不是很方便,个人觉得看代码最好用GDB,既能看到工作过程,还能看到其它变量都存了些什么东西,这里就介绍一下使用的方式。

优化的过程需要有一些benchmark, 我们是使用Wbkit编译后自带的Qtlauncher和Chrome对比来找到可能的优化点。需要用到GDB的地方就是在QtLauncher中跟踪代码的执行过程,既有Webkit部分的也有Qt部分的。按照平常直接gdb 然后断点调试的方式不好用,因为中间它还会加载一些外部的模块。前面头疼了一会儿,后来想到,既然要加载外部模块,那么为什么不等到加载完成再去调试呢,查了查GDB的手册发现GDB可以根据程序的PID来attach上去进行调试,这样就差不多Ok了,过程如下:

  1. 照常启动Qtlauncher: 
    export http_proxy=
    QtLauncher
  2. 使用ps -a的命令找到QtLauncher的PID,记下来
  3. 在另一个终端中输入 gdb Qtlauncher
  4. 在gdb命令行中输入attach 跟踪到QtLauncher中并进行调试
经过实验,完全可行,WebKit和Qt部分的代码都可以看的到,这样读代码就方便多了
阅读(1272) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~