想要学习Webkit内核,首先需要的就是了解Webkit的机制,主要是用来干嘛的。WebKit是一个开源的浏览器网页排版引擎,包含WebCore排版引擎和JSCore引擎。WebCore和JSCore引擎来自于KDE项目的KHTML和KJS开源项目。Android平台的Web引擎框架采用了WebKit项目中的WebCore和JSCore部分,上层由Java语言封装,并且作为API提供给Android应用开发者,而底层使用WebKit核心库(WebCore和JSCore)进行网页排版。
1.学习webkit内核的第一步就是下载官方的webkit源码;
2.想要真正的学习还要先编译webkit,编译的流程可以编写一个脚本文件直接执行;
3.在编译好webkit环境之后,我们就可以开始研究学习webkit的源码了;
在开始学习Webkit内核之前,我认为还需要掌握两个概念:
GTK是什么,什么作用?GDB是什么,什么作用?
GTK(GIMPToolkit)是一套用于创建图形用户界面的工具包。GTK实质上是一个面向对象的应用程序接口(API)。尽管完全用C 写成的,但它是基于类和回调函数(指向函数的指针)的思想实现的
想要学习好webkit内核,那么必须掌握对于webkit的调试,我们利用gdb进行调试(为什么要调试webkit呢?是因为webkit内核的源码庞大并且逻辑复杂,利用gdb调试的作用就是熟悉源码的整个流程,确定一定的代码范围,简而言之调试定位代码。)
那么想要学习Webkit,必然得先掌握gdb的使用。下面介绍一下GDB常用的命令
下面介绍一下GDB常用的命令:
-
q或quit 退出GDB
-
r或run 运行程序
-
c或continue 继续运行至下一个断点
-
s或step 单步跟踪,会进入每一个函数调用
-
n或next 执行下一步,不会进行函数
-
ENTER(回车) 重复上一命令
-
b或break 设置断点
-
d或delete 删除断点,不带参数则删除所有断点
-
h或help 显示帮助信息
设置断点
可以用以下方法设置断点:
-
b filename:lineno,如FrameLoader.cpp:1515
-
b filename:function,如FrameLoader.cpp:loadWithDocumentLoader
-
b namespace::class::func,如WebCore::FrameLoader::load
到了现在,学习Webkit内核的前期准备工作算是做好了,接下来就要开始漫长的源代码的熟悉研究,耐得住寂寞,就能成为技术大神。