六.编译与调试
在ubuntu-10.04上编译Webkit,所用的版本r60742,基于Qt:
- 安装sudo apt-get install libxslt-dev gperf bison libsqlite3-dev flex libqt4-dev build-essential subversion libenchant-dev libXt-dev;如果有其他库没有安装,根据提示,用apt-get install安装,如果不知道包的名称,可以用apt-get search NAME搜索。
-
进到WebKit目录下,开始编译:(以下默认为此目录)
QTDIR=/usr/share/qt4/ ./WebKitTools/Scripts/build-webkit --qt --debug
如果你只使用WebKit而不管内部结构,可以不用--debug选项;
如果是第一次编译,而且你用的机器性能又一般,那么时间会长一点;
中间可能出现错误,比如文件找不到,那么你要看看是哪个包的文件,要将这个包安装一下,诸如此类。 -
编译成功之后,会有提示信息
==================================================
WebKit is now built (1h:04m:28s).
To run QtLauncher with this newly-built code, use the
"WebKit/WebKitTools/Scripts/run-launcher" script.
==================================================
然后可用脚本run-launcher运行。 -
调试来查看WebKit的工作过程:
脚本run-launcher实际的运行程序为:./WebKitBuild/Debug/bin/QtTestBrowser;
程序源代码在:./WebKitTools/QtTestBrowser/; -
以www.baidu.com为例,查看调试过程:
对WebCore内部的断点设置,需要在程序运行过程中设定,因为so库的符号表是运行时加载的(不然就不叫“动态链接”了),比如先用break main在main程序停住,然后设置WebCore::FrameLoader::load(...),可以设置的标志是:当你输入部分断点函数名,连续按2下Tab键,会有提示;
在某个断点停住之后,可以用bt查看此函数之前的调用关系,比如调用过程中的函数。 - 另外,如果编译GTK版本的WebKit,首先确保Gtk+-2.0安装完毕,然后用类似的方法:./WebKitTools/Scripts/build-webkit --qt --debug即可。
七.主要概念类图
WebKit中的类有几千个之多,这里只是将WebKit特别是WebCore中主要的一些类及其关系勾画出来,希望能给大家以借鉴。

八.参考文献及资源链接
对webKit探讨比较全面和深入的,首推侯炯的《WebKit研究报告》,分I、II两部分,在网上可以轻易搜到;
另外,Jelly's Blog中也对WebKit有比较好的探讨,包括基础介绍、架构以及几个重要的专题,地址是:http://www.jjos.org/tag/webkit;
还有一些正宗的文章,来自WebKit官方网站,www.webkit.org的Surfin博客:(英文,另外注意发布时间)
-
WebKit页面缓存I:http://webkit.org/blog/427/webkit-page-cache-i-the-basics/
-
样式滚动条:http://webkit.org/blog/363/styling-scrollbars/
-
3D变换:http://webkit.org/blog/386/3d-transforms/
-
CSS单元:http://webkit.org/blog/57/css-units/
-
CSS动画I:http://webkit.org/blog/138/css-animation/
-
CSS动画II:http://webkit.org/blog/324/css-animation-2
-
CSS变换:http://webkit.org/blog/130/css-transforms/
-
CSS反射:http://webkit.org/blog/182/css-reflections/
-
CSS Mask:http://webkit.org/blog/181/css-masks/
-
CSS画布:http://webkit.org/blog/176/css-canvas-drawing/
-
CSS梯度:http://webkit.org/blog/175/introducing-css-gradients/
-
CSS背景裁剪:http://webkit.org/blog/164/background-clip-text/
-
Inspector介绍:http://webkit.org/blog/41/introducing-the-web-inspector/
-
Inspector重新设计:http://webkit.org/blog/197/web-inspector-redesign/
-
完全通过Acid3测试:http://webkit.org/blog/280/full-pass-of-acid-3/
-
介绍新的JavaScript引擎——SquirrelFish:
http://webkit.org/blog/189/announcing-squirrelfish/ -
再次探讨SquirrelFish:http://webkit.org/blog/214/introducing-squirrelfish-extreme/
-
Windows系统的GDI文字:http://webkit.org/blog/168/gdi-text-on-windows/
-
RefPtr与PassRefPtr基础:http://webkit.org/coding/RefPtr.html
-
webkit页面加载过程http://webkit.org/blog/1188/how-webkit-loads-a-web-page/
-
客户端数据存储:http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/
-
Rendering:http://webkit.org/blog/page/19/
-
背景音乐:http://webkit.org/blog/96/background-music/
-
Text Stroke:http://webkit.org/blog/85/introducing-text-stroke/
-
理解html,xml,xhtml:http://webkit.org/blog/68/understanding-html-xml-and-xhtml/
-
Strange Medium,关于Text:http://webkit.org/blog/67/strange-medium/
-
高DPI1:http://webkit.org/blog/55/high-dpi-web-sites/
-
高DPI2:http://webkit.org/blog/56/high-dpi-part-2/
-
Webcore目录结构:http://webkit.org/blog/42/webcore-directory-structure/
-
按钮:http://webkit.org/blog/28/buttons/
-
Javascript与DOM的兼容:http://webkit.org/blog/27/javascript-and-dom-compatibility/
-
Webkit代码风格:http://webkit.org/blog/25/webkit-coding-style-guidelines/
-
Safari内存泄漏的改进:http://webkit.org/blog/24/update-on-memory-leaks/
-
Safari内存泄漏的检查:http://webkit.org/blog/20/were-hunting-memory-leaks/
-
哈希表1:http://webkit.org/blog/6/hashtables-part-1/
-
哈希表2: http://webkit.org/blog/8/hashtables-part-2/
(全文完,文中对错,欢迎讨论)
1981

被折叠的 条评论
为什么被折叠?



