使用GDB调试QT&WEBKIT
时间:2010-07-05 来源:frostmourn716
欢迎访问我的新博客TroyChengSpace:http://troychengspace.appspot.com/
最近在做的事情是优化Webkit内核在qt下的性能,需要手动编译Webkit和Qt的源代码(编译的过程见前面几篇日志),然后进行优化。在这个过程中遇到了一个不大不小的麻烦,在看源代码的时候我们都需要绘制调用关系图,但是在MeeGo系统上很多常用的工具都没有,用Vim+cTags+cscope看调用关系也不是很方便,个人觉得看代码最好用GDB,既能看到工作过程,还能看到其它变量都存了些什么东西,这里就介绍一下使用的方式。
优化的过程需要有一些benchmark, 我们是使用Wbkit编译后自带的Qtlauncher和Chrome对比来找到可能的优化点。需要用到GDB的地方就是在QtLauncher中跟踪代码的执行过程,既有Webkit部分的也有Qt部分的。按照平常直接gdb <app>然后断点调试的方式不好用,因为中间它还会加载一些外部的模块。前面头疼了一会儿,后来想到,既然要加载外部模块,那么为什么不等到加载完成再去调试呢,查了查GDB的手册发现GDB可以根据程序的PID来attach上去进行调试,这样就差不多Ok了,过程如下:
- 照常启动Qtlauncher:
export http_proxy=
QtLauncher <args> - 使用ps -a的命令找到QtLauncher的PID,记下来
- 在另一个终端中输入 gdb Qtlauncher
- 在gdb命令行中输入attach <PID>跟踪到QtLauncher中并进行调试

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载- 4 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载73.78MB · 96℃
1970-01-01
- 5 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载43.7 MB · 99℃
1970-01-01
- 6 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载110.69MB · 95℃
1970-01-01