亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種代碼調(diào)試的方法及裝置的制作方法

文檔序號:6332152閱讀:123來源:國知局
專利名稱:一種代碼調(diào)試的方法及裝置的制作方法
技術領域
本發(fā)明涉及計算機及嵌入式領域,特別涉及一種代碼調(diào)試的方法及裝置。
背景技術
Android 一詞的本義指“機器人”,同時也是一種基于Linux ( —種操作系統(tǒng))平臺 的開源移動終端操作系統(tǒng)的名稱。該操作系統(tǒng)由操作系統(tǒng)、中間件、用戶界面和應用軟件 組成,采用軟件堆層(Software Stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以 Linux內(nèi)核工作為基礎,由C(一種編程語言)語言開發(fā),只提供基本功能;中間層包括函數(shù) 庫(Library)和虛擬機(Virtual Machine),由C++(—種編程語言)語言開發(fā)。最上層是 各種應用軟件,包括通話程序,短信程序等,由各公司自行開發(fā),以Java(—種編程語言)語 言作為編寫程序的一部分語言。Qt( —種開發(fā)平臺)是一個跨平臺的C++圖形用戶界面應用程序框架。它提供給 應用程序開發(fā)者建立圖形用戶界面所需的所用功能。Qt具有豐富的API (應用程序接口), 是完全面向?qū)ο蟮?,很容易擴展,并且允許真正地組件編程。WebKit (—種瀏覽器內(nèi)核,也常用作瀏覽器名稱)是一個開源的瀏覽器內(nèi)核, Android操作系統(tǒng)使用它作為內(nèi)置瀏覽器的內(nèi)核,并且將采用該內(nèi)核的瀏覽器稱為WebKit 瀏覽器。WebKit瀏覽器高效穩(wěn)定,兼容性好,并且源碼結(jié)構(gòu)清晰,易于維護。對Android操 作系統(tǒng)上WebKit瀏覽器代碼進行調(diào)試,除了打印log(日志)的方式外,目前主要的方式就 是使用gdb server/gdb (程序調(diào)試工具)進行調(diào)試,即在模擬器環(huán)境下開發(fā)調(diào)試代碼時,使 用gdb server綁定被調(diào)試的過程(例如WebKit瀏覽器),然后進行調(diào)試。然而在Android系統(tǒng)中,當調(diào)試代碼量較小的過程時,gdb尚可滿足調(diào)試需求,但 WebKit代碼量很大,且以多線程方式運行,在調(diào)試時需要調(diào)用的調(diào)試函數(shù)較為復雜,此時 Android系統(tǒng)中的gdb就無法滿足調(diào)試需要,在調(diào)試時,往往會停留在設置的某些斷點上無 法繼續(xù)運行,或者根本無法開始調(diào)試過程。這在很大程度上制約了 WebKit開發(fā)效率的提 升。

發(fā)明內(nèi)容
本發(fā)明實施例提供一種代碼調(diào)試的方法及裝置,用于實現(xiàn)對WebKit瀏覽器代碼 的正確調(diào)試,提升WebKit瀏覽器的開發(fā)效率。一種代碼調(diào)試的裝置,包括操作系統(tǒng)Android模塊,用于對第一瀏覽器內(nèi)核WebKit瀏覽器代碼進行編譯,生 成第一 WebKit代碼;用戶界面UI編譯模塊,用于對第二 WebKit瀏覽器代碼進行編譯,生成第二 WebKit 代碼;調(diào)試模塊,用于在Android模塊中對第一 WebKit代碼進行調(diào)試,及在UI編譯模塊 中對第二 WebKit代碼進行調(diào)試;
比對模塊,用于根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試 過程中相應錯誤代碼。一種代碼調(diào)試的方法,包括以下步驟Android模塊對第一 WebKit瀏覽器代碼進行編譯,得到第一 WebKit代碼;UI編譯模塊對第二 WebKit瀏覽器代碼進行編譯,得到第二 WebKit代碼;調(diào)試模塊在Android模塊中對第一 WebKit代碼進行調(diào)試,及在UI編譯模塊中對 第二 WebKit代碼進行調(diào)試;比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試過程 中相應錯誤代碼。本發(fā)明實施例中,Android模塊對第一 WebKit瀏覽器代碼進行編譯,得到第一 WebKit代碼,UI編譯模塊對第二 WebKit瀏覽器代碼進行編譯,得到第二 WebKit代碼;調(diào)試 模塊在Android模塊中對第一 WebKit代碼進行調(diào)試,及在UI編譯模塊中對第二 WebKit代 碼進行調(diào)試;比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試過 程中相應錯誤代碼。從而實現(xiàn)了利用gdb對WebKit瀏覽器代碼的正確調(diào)試,提升了 WebKit 瀏覽器的開發(fā)效率。


圖1為本發(fā)明實施例中代碼調(diào)試裝置的主要結(jié)構(gòu)圖;圖2為本發(fā)明實施例中代碼調(diào)試裝置的詳細結(jié)構(gòu)圖;圖3為本發(fā)明實施例中代碼調(diào)試方法的主要流程圖;圖4為本發(fā)明實施例中代碼調(diào)試方法的詳細流程圖;圖5為本發(fā)明實施例中加入代碼標識后代碼調(diào)試方法的詳細流程圖。
具體實施例方式本發(fā)明實施例中,Android模塊對第一 WebKit瀏覽器代碼進行編譯,得到第一 WebKit代碼,UI編譯模塊對第二 WebKit瀏覽器代碼進行編譯,得到第二 WebKit代碼;調(diào)試 模塊在Android模塊中對第一 WebKit代碼進行調(diào)試,及在UI編譯模塊中對第二 WebKit代 碼進行調(diào)試;比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試過 程中相應錯誤代碼。從而實現(xiàn)了利用gdb對WebKit瀏覽器代碼的正確調(diào)試,提升了 WebKit 瀏覽器的開發(fā)效率參見圖1,本發(fā)明實施例中的代碼調(diào)試裝置包括Android模塊101、UI編譯模塊 102、調(diào)試模塊103及比對模塊104。Android模塊101用于對第一 WebKit瀏覽器代碼進行編譯,生成第一 WebKit代 碼。Android模塊101還為代碼調(diào)試提供平臺。較佳的,本發(fā)明實施例中Android模塊101 可以具體為Android操作系統(tǒng)。Android模塊101對第一 WebKit瀏覽器代碼的調(diào)試提供 平臺,使對第一 WebKit瀏覽器代碼的調(diào)試可以在Android模塊101平臺上完成。Android 模塊101對第一 WebKit瀏覽器代碼進行編譯,編譯結(jié)束后生成一個DEBUG (調(diào)試)版本的 WebKit代碼,稱為第一WebKit代碼,然后由調(diào)試模塊103對其進行調(diào)試。由于Android模塊 101的底層接口限制,即Android模塊101中的調(diào)試模塊103功能不夠完善,使調(diào)試工作無法順利進行,調(diào)試過程可能會停滯在某一個設置的斷點上無法繼續(xù)前進。通過比對模塊104 將Android模塊101調(diào)試過程及UI編譯模塊102調(diào)試過程進行對比,尤其需比對Android 模塊101調(diào)試過程無法執(zhí)行之處的代碼,根據(jù)UI編譯模塊102調(diào)試過程對該處代碼的調(diào)試 結(jié)果,更正Android模塊101調(diào)試過程中該處的錯誤代碼,從而實現(xiàn)了在Android模塊101 中對第一 WebKit瀏覽器代碼進行編譯及調(diào)試。UI編譯模塊102用于對第二 WebKit瀏覽器代碼進行編譯,生成第二 WebKit代碼。 其中,第二 WebKit瀏覽器代碼為對第一 WebKit瀏覽器代碼做出相應修改后得到的,其中, 第一 WebKit瀏覽器代碼中相應函數(shù)接口與UI編譯模塊102不兼容,因此需進行修改,例 如,本發(fā)明實施例中該函數(shù)為d- > frame- > loader ()-> load函數(shù);第一 WebKit瀏覽器 代碼中還有與UI編譯模塊102有沖突的函數(shù),需將其屏蔽,例如,本發(fā)明實施例中該函數(shù)為 ASSERT()。UI編譯模塊102還為代碼調(diào)試提供平臺。其中,UI編譯模塊102可以是具有 UI接口的相應平臺。較佳的,本發(fā)明實施例中UI編譯模塊102可以具體為Qt平臺。如果 Android操作系統(tǒng)版本為1. 5以上,則Qt開發(fā)包需要使用Qt4. 5及以上的版本,例如,可以 使用 qt-xll-opensource-src-4. 5. 0. tar. gz。UI 編譯模塊 102 對第二 WebKit 瀏覽器代碼 進行編譯,在編譯之前,執(zhí)行如下命令$> export PATH = <Qt library path>/bin: $ {PATH} //將 Qt 開發(fā)包的路徑 導入系統(tǒng)中;$ > webkit/ffebKitTools/Scripts/build-webkit—debug // 使用 ffebKit 的 官方編譯腳本編譯出一個DEBUG版本的第二 WebKit代碼。其中,webkit/WebKitTools/Scripts/build-webkit是 WebKit 瀏覽器的官方編譯 腳本,因為編譯出的第二 WebKit代碼可以使用gdb進行跟蹤調(diào)試,所以需要編譯出一份攜 帶調(diào)試信息的DEBUG版本的第二 WebKit代碼,因此需要指定“一debug”參數(shù)。以上命令的 作用是將Qt開發(fā)包,例如以上描述的qt-xll-opensource-src-4. 5. 0. tar. gz按照其路徑 導入編譯環(huán)境中。執(zhí)行以上命令后可進行編譯,編譯完成后,生成一份DEBUG版本的第二 WebKit代碼。此時,執(zhí)行如下命令$ > gdb QtTestBrowser // 使用 gdb 進行調(diào)試。就可以由調(diào)試模塊103 (本發(fā)明實施例中可具體為gdb)開始對該DEBUG版本的第 二 WebKit代碼進行調(diào)試。由于UI編譯模塊102沒有底層接口限制,調(diào)試模塊103可以正常 運行,因此可以正常對該第二 WebKit代碼進行調(diào)試,通過比對模塊104將Android模塊101 調(diào)試過程及UI編譯模塊102調(diào)試過程進行對比,尤其需比對Android模塊101調(diào)試過程無 法執(zhí)行之處的代碼,根據(jù)UI編譯模塊102調(diào)試過程對該處代碼的調(diào)試結(jié)果,更正Android 模塊101調(diào)試過程中該處的錯誤代碼,從而實現(xiàn)了在Android模塊101上對第二 WebKit瀏 覽器代碼進行編譯及調(diào)試調(diào)試模塊103用于在Android模塊中對第一 WebKit代碼進行調(diào)試,及在UI編譯 模塊中對第二 WebKit代碼進行調(diào)試。Android模塊101對第一 WebKit瀏覽器代碼進行編 譯,生成一份DEBUG版本的第一 WebKit代碼,及UI編譯模塊102對第二 WebKit瀏覽器代 碼進行編譯,生成一份DEBUG版本的第二 WebKit代碼。調(diào)試模塊103分別在Android模塊 101中及UI編譯模塊102中對DEBUG版本的第一 WebKit代碼及第二 WebKit代碼進行調(diào)試。 在調(diào)試過程中,調(diào)試模塊103需判斷Android模塊101調(diào)試過程是否在某處無法繼續(xù)執(zhí)行,如果Android模塊101調(diào)試過程在某處無法繼續(xù)執(zhí)行,則比對模塊104將Android模塊101 調(diào)試過程中該處代碼與UI編譯模塊102調(diào)試過程中該處代碼進行比對,根據(jù)UI編譯模塊 102對該處代碼的調(diào)試結(jié)果,更正Android模塊101調(diào)試過程中的該處代碼,使Android模 塊101調(diào)試過程繼續(xù)順利進行,如此一直到調(diào)試結(jié)束,從而調(diào)試模塊103完成了在Android 模塊101中對第一 WebKit瀏覽器代碼的調(diào)試。較佳的,本發(fā)明實施例中調(diào)試模塊103可以 具體為gdb程序調(diào)試工具。比對模塊104用于根據(jù)UI編譯模塊102調(diào)試過程中相應調(diào)試結(jié)果更正Android 模塊101調(diào)試過程中相應錯誤代碼。當調(diào)試模塊103判斷出Android模塊101調(diào)試過程在 某處無法繼續(xù)執(zhí)行,則比對模塊104具體用于將Android模塊101調(diào)試過程及UI編譯模塊 102調(diào)試過程進行對比,根據(jù)UI編譯模塊102調(diào)試過程的調(diào)試結(jié)果更正Android模塊101 的調(diào)試過程中相應錯誤代碼。調(diào)試模塊103在Android模塊101中對第一 WebKit代碼進 行調(diào)試,及在UI編譯模塊102中對第二 WebKit代碼進行調(diào)試,在調(diào)試過程中,如果Android 模塊101調(diào)試過程在某代碼處無法繼續(xù)執(zhí)行,則比對模塊104將Android模塊101調(diào)試過 程中該處代碼與UI編譯模塊102調(diào)試過程中該處代碼進行比對,根據(jù)UI編譯模塊102對 該處代碼的調(diào)試結(jié)果,更正Android模塊101調(diào)試過程中的該處代碼,使Android模塊101 調(diào)試過程繼續(xù)順利進行,如此一直到調(diào)試結(jié)束,從而調(diào)試模塊103完成了在Android模塊 101中對第一 WebKit瀏覽器代碼的調(diào)試?;蛘?,第一 WebKit代碼及第二 WebKit代碼中每 行代碼都有其相應的代碼標識,例如,第一行代碼對應代碼標識‘ 1’,第二行代碼對應代碼 標識‘2’等,并且,第一 WebKit代碼及第二 WebKit代碼中相應行的代碼所對應的代碼標識 可以相同,例如,第一 WebKit代碼及第二 WebKit代碼中的第一行代碼都對應代碼標識‘ 1’, 其中,第一行代碼對應的功能相同;或者第一 WebKit代碼及第二 WebKit代碼中相應行的 代碼所對應的代碼標識可以相應,例如,第一 WebKit代碼中第一行代碼對應標識‘ 1’,第二 WebKit代碼中第一行代碼對應標識‘ 1,,如果Android模塊101調(diào)試過程在某代碼處無法 繼續(xù)執(zhí)行,則根據(jù)第一 WebKit代碼中該行代碼所對應的代碼標識在第二 WebKit代碼中查 詢,根據(jù)UI編譯模塊102中該代碼標識所對應的代碼的調(diào)試結(jié)果,更正Android模塊101 調(diào)試過程中的該處錯誤代碼。參見圖2,所述裝置還包括移植模塊105。移植模塊105用于將WebKit瀏覽器代碼從Android模塊101中移植到UI編譯模 塊102中。WebKit自身具有良好的跨平臺特性,因此,在將Android模塊101中的WebKit 瀏覽器代碼移植到UI編譯模塊102中時,只需要對WebKit瀏覽器代碼進行少量的修改即 可。其中,修改前的WebKit瀏覽器代碼稱為第一 WebKit瀏覽器代碼,修改后的WebKit瀏覽 器代碼稱為第二 WebKit瀏覽器代碼。第一 WebKit瀏覽器代碼中需改動文件的清單如下WebKit/qt/Api/qwebframe. cpp1WebCore/platform/KURL. cpp2WebCore/html/HTMLSelectElement. cpp3其中,文件1,即qwebframe文件,負責管理瀏覽器頁面的框架;文件2,即 KURL文件,是URL (Uniform Resource Locator,統(tǒng)一資源定位)的封裝;文件3,即 HTMLSelectElement 文件,是 HTML (Hypertext Markup Language,超文本鏈接標示語言)的 選擇框。代碼詳細改動過程如下
在源碼文件WebKit/qt/Api/qwebframe. cpp 內(nèi),即文件 1 內(nèi)將QffebFrameQffebFrame(QWebPage氺parent, QffebFrameData氺 frameData){......d_ > frame- > loader () - > load (request, frameData- > name);......}修改為QffebFrame QffebFrame (QWebPage氺parent, QffebFrameData氺 frameData){......d_ > frame- > loader () - > load (request, frameData- > name, false) ;//在 WebKit內(nèi)核版本中,d- > frame- > loader ()- > load函數(shù)有三個參數(shù),而QWebFrame類 的實現(xiàn)函數(shù)由于版本較舊,使用的d_ > frame- > loader ()-> load函數(shù)只有兩個參數(shù), 因此在將WebKit瀏覽器代碼移植到Qt平臺時,需要給該函數(shù)增加一個參數(shù),否則編譯無法 通過,也無法實現(xiàn)預定的功能。下同;......}將void QffebFrameload(const QNetworkRequest&req,QNetworkAccessManagerOperation operation, constQByteArray&body){ ......d_ > frame- > loader () - > load (request);......}修改為void QffebFrame:load(const QNetworkRequest&req,QNetworkAccessManager::Operation operation, constQByteArray&body){......d_ > frame- > loader () - > load (request, false);......}
將void QffebFrame setHtml (const QString&html, const QUrl&baseUrl){......d- > frame- > loader () - > load (request, substituteData);...... }修改為void QffebFrame : setHtml (const QString&html, const QUrl&baseUrl){......d_ > frame- > loader () - > load (request, substituteData, false);......}將void QffebFrame::setContent(const QByteArray&data, constQString&mimeType, coBst QUrl&baseUrl){......d_ > frame- > loader () - > load (request, substituteData);......}修改為void QffebFrame:setContent(const QByteArray&data, constQString&mimeType,coBst QUrl&baseUrl){......d_ > frame- > loader () - > load (request, substituteData, false);......}在源碼文件WebCore/platform/KURL. cpp 內(nèi),即文件 2 內(nèi)MKURLKURL(const char氺url){ ......ASSERT (url == m_string);......KURLKURL(const char*url)
AS SERT (url = = m_string)
KURL:KURL(const String&url)
AS SERT (url = = m_string)修改為{......#if ! PLATFORM(QT) //在使用Qt平臺進行編譯時, ASSERT()可以通過,但在運行時該函數(shù)卻會導致程序崩潰。鑒于ASSERT0函數(shù)對瀏覽器的 功能沒有任何影響,因此此處通過一個編譯器預處理選項將其所包含的對源碼的編譯功能 進行了屏蔽,使其無法進行編譯,也就無法運行。下同;#endif......}將修改為#endif......}修改為
KURLKURL(const String&url)
#if ! PLATFORM(QT)
ASSERT (url = = m_string)
在源碼文件 WebCore/html/HTMLSelectElement. cpp 內(nèi),即文件 3 內(nèi) 將
HTMLSelectElementHTMLSelectElement (const QualifiedName& tagName,Document^doc, HTMLFormElement*f)
ASSERT (hasTagName (selectTag) Il hasTagName (keygenTag))
HTMLSelectElementHTMLSelectElement(const QualifiedName&tagName, Document^doc, HTMLFormElement^f)
#if ! PLATFORM (QT) ASSERT(hasTagName(selectTag) 11 hasTagName(keygenTag)); #endif其中,凡是函數(shù)接口與UI編譯模塊102有沖突的,均需修改其接口,例如,本發(fā)明 實施例中WebKit瀏覽器代碼中的d- > frame- > loader ()- > load函數(shù)均需要修改;凡 是與UI編譯模塊102有沖突的函數(shù),均需要屏蔽,例如,本發(fā)明實施例中WebKit瀏覽器代 碼中的ASSERT0函數(shù)均需要屏蔽。移植模塊105在完成以上代碼修改后,即可將Android模塊101中的第二 WebKit 瀏覽器代碼移植到UI編譯模塊102中,由UI編譯模塊102開始對該第二 WebKit瀏覽器代 碼的編譯過程。下面通過實現(xiàn)流程來介紹代碼調(diào)試的方法。本發(fā)明實施例介紹代碼調(diào)試的主要方法。參見圖3,方法流程如下步驟301 =Android模塊101對第一 WebKit瀏覽器代碼進行編譯,得到第一 WebKit 代碼。步驟302 =UI編譯模塊102對第二 WebKit瀏覽器代碼進行編譯,得到第二 WebKit 代碼。步驟303 調(diào)試模塊103在Android模塊101中對第一 WebKit代碼進行調(diào)試。步驟304 調(diào)試模塊103在UI編譯模塊102中對第二 WebKit代碼進行調(diào)試。步驟305 比對模塊104根據(jù)UI編譯模塊102調(diào)試過程中相應調(diào)試結(jié)果更正 Android模塊101調(diào)試過程中相應錯誤代碼。本發(fā)明實施例介紹代碼調(diào)試的詳細方法。參見圖4,方法流程如下步驟401 將Android模塊101中的第一 WebKit瀏覽器代碼作相應修改,得到第 二 WebKit瀏覽器代碼。因WebKit瀏覽器代碼與UI編譯模塊102不兼容,可能無法將其首 先移植到UI編譯模塊102后再進行修改,因此可以先在Android模塊101中將第一 WebKit 瀏覽器代碼修改,得到與UI編譯模塊102兼容的第一 WebKit瀏覽器代碼后,再將其移植到 UI編譯模塊102中。步驟402 移植模塊105將第二 WebKit瀏覽器代碼移植到UI編譯模塊102中。步驟403 =Android模塊101對第一 WebKit瀏覽器代碼進行編譯,生成第一 WebKit 代碼。步驟404 =UI編譯模塊102對第二 WebKit瀏覽器代碼進行編譯,生成第二 WebKit 代碼。其中,第一 WebKit代碼與第二 WebKit代碼均為DEBUG版本的WebKit代碼。其中,步驟403及步驟404沒有先后順序,可以以任意順序進行,也可以同時進行。步驟405 調(diào)試模塊103在Android模塊101上對第一 WebKit代碼進行調(diào)試。
步驟406 調(diào)試模塊103在UI編譯模塊102上對第二 WebKit代碼進行調(diào)試。其中,步驟405及步驟406沒有先后順序,可以以任意順序進行,也可以同時進行。步驟407 調(diào)試模塊103判斷Android模塊101調(diào)試過程是否在某處無法繼續(xù)執(zhí) 行。如果判斷結(jié)果為是,繼續(xù)步驟408,否則繼續(xù)步驟405。步驟408 比對模塊104根據(jù)UI編譯模塊102調(diào)試過程中相應代碼處的調(diào)試結(jié)果 更正Android模塊101調(diào)試過程中相應錯誤代碼。本發(fā)明實施例中通過查找代碼標識來更正Android模塊101調(diào)試過程中相應錯誤 代碼。參見圖5,詳細方法流程如下步驟501 將Android模塊101中的第一 WebKit瀏覽器代碼作相應修改,得到第 二 WebKit瀏覽器代碼。步驟502 移植模塊105將第二 WebKit瀏覽器代碼移植到UI編譯模塊102中。步驟503 =Android模塊101對第一 WebKit瀏覽器代碼進行編譯,生成第一 WebKit 代碼。步驟504 =UI編譯模塊102對第二 WebKit瀏覽器代碼進行編譯,生成第二 WebKit 代碼。其中,第一 WebKit代碼與第二 WebKit代碼均為DEBUG版本的WebKit代碼。其中,步驟503及步驟504沒有先后順序,可以以任意順序進行,也可以同時進行。步驟505 調(diào)試模塊103在Android模塊101上對第一 WebKit代碼進行調(diào)試。步驟506 調(diào)試模塊103在UI編譯模塊102上對第二 WebKit代碼進行調(diào)試。其中,步驟505及步驟506沒有先后順序,可以以任意順序進行,也可以同時進行。步驟507 調(diào)試模塊103判斷Android模塊101調(diào)試過程是否在某處無法繼續(xù)執(zhí) 行。如果判斷結(jié)果為是,繼續(xù)步驟508,否則繼續(xù)步驟505。步驟508 比對模塊104根據(jù)Android模塊101調(diào)試過程中無法執(zhí)行之處的代碼 的代碼標識,查詢UI編譯模塊102調(diào)試過程中相應代碼標識所對應的代碼。步驟509 比對模塊104根據(jù)UI編譯模塊102調(diào)試過程中相應代碼標識所對應的 代碼更正Android模塊101調(diào)試過程中無法執(zhí)行之處的代碼標識所對應的代碼。本發(fā)明實施例中,Android模塊101對第一 WebKit瀏覽器代碼進行編譯,得到第一 WebKit代碼,UI編譯模塊102對第二 WebKit瀏覽器代碼進行編譯,得到第二 WebKit代碼; 調(diào)試模塊103在Android模塊101中對第一 WebKit代碼進行調(diào)試,及在UI編譯模塊102 中對第二 WebKit代碼進行調(diào)試;比對模塊104根據(jù)UI編譯模塊102調(diào)試過程中相應調(diào)試 結(jié)果更正Android模塊101調(diào)試過程中相應錯誤代碼。從而實現(xiàn)了利用gdb對WebKit瀏 覽器代碼的正確調(diào)試,提升了 WebKit瀏覽器的開發(fā)效率。其中,還包括移植模塊105,用于 將WebKit瀏覽器代碼從Android模塊101移植到UI編譯模塊102,在移植前需對WebKit 瀏覽器代碼作出相應更改,以使其與UI編譯模塊102兼容。并且,在根據(jù)UI編譯模塊102 調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊101調(diào)試過程中相應錯誤代碼時,可以通過查 詢代碼所對應的代碼標識來實現(xiàn)更正,使操作過程更加方便、快速,也更具條理性。本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序 產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實 施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機 可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程 圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一 流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算 機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理 器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生 用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能 的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特 定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計 算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或 其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖 一個方框或多個方框中指定的功能的步驟。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權利要求
一種代碼調(diào)試的裝置,其特征在于,包括操作系統(tǒng)Android模塊,用于對第一瀏覽器內(nèi)核WebKit瀏覽器代碼進行編譯,生成第一WebKit代碼;用戶界面UI編譯模塊,用于對第二WebKit瀏覽器代碼進行編譯,生成第二WebKit代碼;調(diào)試模塊,用于在Android模塊中對第一WebKit代碼進行調(diào)試,及在UI編譯模塊中對第二WebKit代碼進行調(diào)試;比對模塊,用于根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試過程中相應錯誤代碼。
2.如權利要求1所述的裝置,其特征在于,用于編譯得到所述第二WebKit代碼的所述 第二 WebKit瀏覽器代碼是對第一 WebKit瀏覽器代碼進行修改后得到的。
3.如權利要求2所述的裝置,其特征在于,所述修改包括修改函數(shù)接口和屏蔽與UI編 譯模塊有沖突的函數(shù),或所述修改包括修改函數(shù)接口,或所述修改包括屏蔽與UI編譯模塊 有沖突的函數(shù)。
4.如權利要求1所述的裝置,其特征在于,所述比對模塊還用于將Android模塊調(diào)試過 程中無法執(zhí)行之處的代碼及UI編譯模塊調(diào)試過程中該處代碼進行對比,在不一致時,根據(jù) UI編譯模塊的調(diào)試結(jié)果,更正Android模塊調(diào)試過程中該處的錯誤代碼。
5.如權利要求1所述的裝置,其特征在于,所述比對模塊還用于根據(jù)Android模塊調(diào)試 過程中無法執(zhí)行之處的代碼的代碼標識,在UI編譯模塊調(diào)試過程中查找所述代碼標識,根 據(jù)UI編譯模塊調(diào)試過程中所述代碼標識對應的代碼,更正Android模塊調(diào)試過程中無法執(zhí) 行之處的代碼。
6.一種代碼調(diào)試的方法,其特征在于,包括以下步驟Android模塊對第一 WebKit瀏覽器代碼進行編譯,得到第一 WebKit代碼;UI編譯模塊對第二 WebKit瀏覽器代碼進行編譯,得到第二 WebKit代碼;調(diào)試模塊在Android模塊中對第一 WebKit代碼進行調(diào)試,及在UI編譯模塊中對第二 WebKit代碼進行調(diào)試;比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試過程中相 應錯誤代碼。
7.如權利要求6所述的方法,其特征在于,用于編譯得到所述第二WebKit代碼的所述 第二 WebKit瀏覽器代碼是對第一 WebKit瀏覽器代碼進行修改后得到的。
8.如權利要求7所述的方法,其特征在于,所述修改包括修改函數(shù)接口和屏蔽與UI編 譯模塊有沖突的函數(shù),或所述修改包括修改函數(shù)接口,或所述修改包括屏蔽與UI編譯模塊 有沖突的函數(shù)。
9.如權利要求6所述的方法,其特征在于,比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應 調(diào)試結(jié)果更正Android模塊調(diào)試過程中相應錯誤代碼的步驟包括比對模塊將Android模 塊調(diào)試過程中無法執(zhí)行之處的代碼及UI編譯模塊調(diào)試過程中該處代碼進行對比,在不一 致時,根據(jù)UI編譯模塊的調(diào)試結(jié)果,更正Android模塊調(diào)試過程中該處的錯誤代碼。
10.如權利要求6所述的方法,其特征在于,比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應 調(diào)試結(jié)果更正Android模塊調(diào)試過程中相應錯誤代碼的步驟包括比對模塊根據(jù)Android模塊調(diào)試過程中無法執(zhí)行之處的代碼的代碼標識,在UI編譯模塊調(diào)試過程中查找所述代 碼標識,根據(jù)UI編譯模塊調(diào)試過程中所述代碼標識對應的代碼,更正Android模塊調(diào)試過 程中無法執(zhí)行之處的代碼
全文摘要
本發(fā)明公開了一種代碼調(diào)試的方法,用于實現(xiàn)對WebKit瀏覽器代碼的正確調(diào)試,提升WebKit瀏覽器的開發(fā)效率。所述方法包括Android模塊對第一WebKit瀏覽器代碼進行編譯,得到第一WebKit代碼;UI編譯模塊對第二WebKit瀏覽器代碼進行編譯,得到第二WebKit代碼;調(diào)試模塊在Android模塊中對第一WebKit代碼進行調(diào)試,及在UI編譯模塊中對第二WebKit代碼進行調(diào)試;比對模塊根據(jù)UI編譯模塊調(diào)試過程中相應調(diào)試結(jié)果更正Android模塊調(diào)試過程中相應錯誤代碼。本發(fā)明還公開了用于實現(xiàn)所述方法的裝置。
文檔編號G06F11/36GK101944061SQ20101028359
公開日2011年1月12日 申請日期2010年9月15日 優(yōu)先權日2010年9月15日
發(fā)明者朱宏浩 申請人:青島海信移動通信技術股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1