attach pid
初始兩個(gè)線程
thread 1
main Tools/QtTestBrowser/main.cpp
thread 2
b IconDatabase.cpp:1438
輸入網(wǎng)址
(如何記錄log LOG -> WTFLog Source/JavaScriptCore/wtf/Assertions.cpp 引用
http://blog.csdn.net/bluepath/article/details/7029215(WTF是一個(gè)子工程,其主要為WebKit提供各種基礎(chǔ)工具,這里封裝了,著名的智能指針,斷言,log輸出,內(nèi)存分配管理,甚至重寫了一套獨(dú)立的容器類,比如hashmap,hashSet,Vector等,其中最為重要是智能指針的實(shí)現(xiàn)。其輸出為\WebKitBuild\lib)
LOG(channel, ...) 宏定義 Source/JavaScriptCore/wtf/Assertions.h:365 第一個(gè)變量的實(shí)際名稱為 Log##channel
-> WTFLog(WTFLogChannel* channel, const char* format, ...)
WTFLogChannel變量定義示例
extern WTFLogChannel LogIconDatabase; Source/WebCore/platform/Logging.h:45
WTFLogChannel LogIconDatabase = { 0x00000400, "WebCoreLogLevel", WTFLogChannelOff }; Source/WebCore/platform/Logging.cpp:41
使用: LOG(IconDatabase, "test"),開啟時(shí)將WTFLogChannelOff替換成WTFLogChannelOn
)
技術(shù)文章
■Major Objects in WebCore
■RefPtr and PassRefPtr Basics
■A guide to Assertion macros in WebKit
■WebCore Rendering
■How WebKit loads a Web Page
■WebKit Page Cache
■How a DOM Element is Attached
未知
webkit的qt移植
Webcore中文本資源編解碼
WebCore中的http請求信息維護(hù)
WebCore中的http響應(yīng)信息維護(hù)
WebKit加載網(wǎng)頁的流程
WebKit中的html詞法解析
html解析模型
html的解析過程,DOM節(jié)點(diǎn)樹的建立
Frame類
FrameLoader類
Page類
Loader 模塊是如何加載資源的,分主資源和派生資源分析 loader 模塊的類關(guān)系
WebKit中的設(shè)計(jì)模式(一): Noncopyable .
webkit技術(shù)譯文系列(二):RefPtr和PassRefPtr基礎(chǔ) .
WebKit如何加載web頁面 .
WebCore中的渲染機(jī)制(一):基礎(chǔ)知識 .
WebCore中的渲染機(jī)制(二):塊和內(nèi)嵌(Blocks and Inlines) .
Webkit技術(shù)譯文系列(一):WebCore中的主要對象 .
1.體系結(jié)構(gòu)
WebKit上層組織應(yīng)用
WebCore
¨Page與外框相關(guān)的內(nèi)容(Frame,Page,History,Focus,Window)
¨Loader加載資源及Cache
¨HTML-DOM HTML內(nèi)容及解析
¨DOM- DOM CORE內(nèi)容
¨XML- XML內(nèi)容及解析
¨Render-排版功能
¨CSS-DOM CSS內(nèi)容
¨Binding-DOM與JavascriptCore綁定的功能
¨Editing-所有與編輯相關(guān)的功能
JavascriptCore-javascript引擎
¨API-基本javascript功能
¨Binding與其它功能綁定的功能,如:DOM,C,JNI
¨DerviedSource自動產(chǎn)生的代碼
¨ForwordHeads頭文件,無實(shí)際意義
¨PCRE-Perl-Compatible Regular Expressions
¨KJS-Javascript Kernel
¨WTF-KDE的C++模板庫
Unicode unicode 庫
Tools tools庫
CURL-url 客戶端傳輸庫
PlatForm- 與平臺相關(guān)的功能,如圖形圖像,字體,Unicode, IO,輸入法等.
2.解析流程
CURL獲得網(wǎng)站的stream
解析劃分字符串
通過Dom Builder按合法的html規(guī)范生成Dom樹
如果有javascript,JSEngine就通過ECMA-262標(biāo)準(zhǔn)完善Dom樹
把Dom傳給LayoutEngine,進(jìn)行布局,如果有CSS樣式,就通過CSSParser解析。
最后Rendering out出來
Core WebKit Classes
下載網(wǎng)頁
加載頁面
處理頁面
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:586 WebCore::QNetworkReplyHandler::forwardData
Source/WebCore/loader/ResourceLoader.cpp:430 WebCore::ResourceLoader::didReceiveData
Source/WebCore/loader/MainResourceLoader.cpp:463 WebCore::MainResourceLoader::didReceiveData
Source/WebCore/loader/ResourceLoader.cpp:279 WebCore::ResourceLoader::didReceiveData
Source/WebCore/loader/MainResourceLoader.cpp WebCore::MainResourceLoader::addData
Source/WebCore/loader/DocumentLoader.cpp:333 WebCore::DocumentLoader::receivedData
Source/WebCore/loader/DocumentLoader.cpp:299 WebCore::DocumentLoader::commitLoad
Source/WebCore/loader/DocumentLoader.cpp:278 WebCore::DocumentLoader::commitIfReady
Source/WebCore/loader/FrameLoader.cpp:1960 WebCore::FrameLoader::commitProvisionalLoad
頁面解析 dom
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1547 HTMLTreeBuilder::processBodyEndTagForInBody
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:305 WebCore::QNetworkReplyWrapper::receiveSniffedMIMEType
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:320 WebCore::QNetworkReplyWrapper::emitMetaDataChanged
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:203 WebCore::QueueLocker::~QueueLocker
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:178 WebCore::QNetworkReplyHandlerCallQueue::unlock
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:195 WebCore::QNetworkReplyHandlerCallQueue::flush
Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:454 WebCore::QNetworkReplyHandler::finish
Source/WebCore/loader/ResourceLoader.cpp:436 WebCore::ResourceLoader::didFinishLoading
Source/WebCore/loader/MainResourceLoader.cpp:484 WebCore::MainResourceLoader::didFinishLoading
Source/WebCore/loader/DocumentLoader.cpp:288 WebCore::DocumentLoader::finishedLoading
Source/WebCore/loader/DocumentWriter.cpp:214 WebCore::DocumentWriter::end
Source/WebCore/loader/DocumentWriter.cpp:228 WebCore::DocumentWriter::endIfNotLoadingMainResource
Source/WebCore/loader/DocumentWriter.cpp:208 WebCore::DocumentWriter::addData
Source/WebCore/dom/DecodedDataDocumentParser.cpp:54 WebCore::DecodedDataDocumentParser::appendBytes
Source/WebCore/html/parser/HTMLDocumentParser.cpp:367 WebCore::HTMLDocumentParser::append
Source/WebCore/html/parser/HTMLDocumentParser.cpp:175 WebCore::HTMLDocumentParser::pumpTokenizerIfPossible
Source/WebCore/html/parser/HTMLDocumentParser.cpp:276 WebCore::HTMLDocumentParser::pumpTokenizer
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:450 WebCore::HTMLTreeBuilder::constructTreeFromToken
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:460 WebCore::HTMLTreeBuilder::constructTreeFromAtomicToken
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:482 WebCore::HTMLTreeBuilder::processToken
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2120 WebCore::HTMLTreeBuilder::processEndTag
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1883 WebCore::HTMLTreeBuilder::processEndTagForInBody
Source/WebCore/html/parser/HTMLTreeBuilder.cpp:1547 WebCore::HTMLTreeBuilder::processBodyEndTagForInBody
數(shù)據(jù)庫?
Source/WebCore/loader/icon/IconDatabase.cpp
js執(zhí)行
智能指針
Source/JavaScriptCore/wtf/RefPtr.h