CN101944061A - 一种代码调试的方法及装置 - Google Patents

一种代码调试的方法及装置 Download PDF

Info

Publication number
CN101944061A
CN101944061A CN 201010283591 CN201010283591A CN101944061A CN 101944061 A CN101944061 A CN 101944061A CN 201010283591 CN201010283591 CN 201010283591 CN 201010283591 A CN201010283591 A CN 201010283591A CN 101944061 A CN101944061 A CN 101944061A
Authority
CN
China
Prior art keywords
code
webkit
collector
module
debug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 201010283591
Other languages
English (en)
Other versions
CN101944061B (zh
Inventor
朱宏浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hisense Mobile Communications Technology Co Ltd
Original Assignee
Hisense Mobile Communications Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hisense Mobile Communications Technology Co Ltd filed Critical Hisense Mobile Communications Technology Co Ltd
Priority to CN201010283591XA priority Critical patent/CN101944061B/zh
Publication of CN101944061A publication Critical patent/CN101944061A/zh
Priority to PCT/CN2011/072455 priority patent/WO2012034395A1/zh
Application granted granted Critical
Publication of CN101944061B publication Critical patent/CN101944061B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种代码调试的方法,用于实现对WebKit浏览器代码的正确调试,提升WebKit浏览器的开发效率。所述方法包括:Android模块对第一WebKit浏览器代码进行编译,得到第一WebKit代码;UI编译模块对第二WebKit浏览器代码进行编译,得到第二WebKit代码;调试模块在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。本发明还公开了用于实现所述方法的装置。

Description

一种代码调试的方法及装置
技术领域
本发明涉及计算机及嵌入式领域,特别涉及一种代码调试的方法及装置。
背景技术
Android一词的本义指“机器人”,同时也是一种基于Linux(一种操作系统)平台的开源移动终端操作系统的名称。该操作系统由操作系统、中间件、用户界面和应用软件组成,采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C(一种编程语言)语言开发,只提供基本功能;中间层包括函数库(Library)和虚拟机(Virtual Machine),由C++(一种编程语言)语言开发。最上层是各种应用软件,包括通话程序,短信程序等,由各公司自行开发,以Java(一种编程语言)语言作为编写程序的一部分语言。
Qt(一种开发平台)是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立图形用户界面所需的所用功能。Qt具有丰富的API(应用程序接口),是完全面向对象的,很容易扩展,并且允许真正地组件编程。
WebKit(一种浏览器内核,也常用作浏览器名称)是一个开源的浏览器内核,Android操作系统使用它作为内置浏览器的内核,并且将采用该内核的浏览器称为WebKit浏览器。WebKit浏览器高效稳定,兼容性好,并且源码结构清晰,易于维护。对Android操作系统上WebKit浏览器代码进行调试,除了打印log(日志)的方式外,目前主要的方式就是使用gdb server/gdb(程序调试工具)进行调试,即在模拟器环境下开发调试代码时,使用gdb server绑定被调试的过程(例如WebKit浏览器),然后进行调试。
然而在Android系统中,当调试代码量较小的过程时,gdb尚可满足调试需求,但WebKit代码量很大,且以多线程方式运行,在调试时需要调用的调试函数较为复杂,此时Android系统中的gdb就无法满足调试需要,在调试时,往往会停留在设置的某些断点上无法继续运行,或者根本无法开始调试过程。这在很大程度上制约了WebKit开发效率的提升。
发明内容
本发明实施例提供一种代码调试的方法及装置,用于实现对WebKit浏览器代码的正确调试,提升WebKit浏览器的开发效率。
一种代码调试的装置,包括:
操作系统Android模块,用于对第一浏览器内核WebKit浏览器代码进行编译,生成第一WebKit代码;
用户界面UI编译模块,用于对第二WebKit浏览器代码进行编译,生成第二WebKit代码;
调试模块,用于在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;
比对模块,用于根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。
一种代码调试的方法,包括以下步骤:
Android模块对第一WebKit浏览器代码进行编译,得到第一WebKit代码;
UI编译模块对第二WebKit浏览器代码进行编译,得到第二WebKit代码;
调试模块在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;
比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。
本发明实施例中,Android模块对第一WebKit浏览器代码进行编译,得到第一WebKit代码,UI编译模块对第二WebKit浏览器代码进行编译,得到第二WebKit代码;调试模块在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。从而实现了利用gdb对WebKit浏览器代码的正确调试,提升了WebKit浏览器的开发效率。
附图说明
图1为本发明实施例中代码调试装置的主要结构图;
图2为本发明实施例中代码调试装置的详细结构图;
图3为本发明实施例中代码调试方法的主要流程图;
图4为本发明实施例中代码调试方法的详细流程图;
图5为本发明实施例中加入代码标识后代码调试方法的详细流程图。
具体实施方式
本发明实施例中,Android模块对第一WebKit浏览器代码进行编译,得到第一WebKit代码,UI编译模块对第二WebKit浏览器代码进行编译,得到第二WebKit代码;调试模块在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。从而实现了利用gdb对WebKit浏览器代码的正确调试,提升了WebKit浏览器的开发效率。
参见图1,本发明实施例中的代码调试装置包括Android模块101、UI编译模块102、调试模块103及比对模块104。
Android模块101用于对第一WebKit浏览器代码进行编译,生成第一WebKit代码。Android模块101还为代码调试提供平台。较佳的,本发明实施例中Android模块101可以具体为Android操作系统。Android模块101对第一WebKit浏览器代码的调试提供平台,使对第一WebKit浏览器代码的调试可以在Android模块101平台上完成。Android模块101对第一WebKit浏览器代码进行编译,编译结束后生成一个DEBUG(调试)版本的WebKit代码,称为第一WebKit代码,然后由调试模块103对其进行调试。由于Android模块101的底层接口限制,即Android模块101中的调试模块103功能不够完善,使调试工作无法顺利进行,调试过程可能会停滞在某一个设置的断点上无法继续前进。通过比对模块104将Android模块101调试过程及UI编译模块102调试过程进行对比,尤其需比对Android模块101调试过程无法执行之处的代码,根据UI编译模块102调试过程对该处代码的调试结果,更正Android模块101调试过程中该处的错误代码,从而实现了在Android模块101中对第一WebKit浏览器代码进行编译及调试。
UI编译模块102用于对第二WebKit浏览器代码进行编译,生成第二WebKit代码。其中,第二WebKit浏览器代码为对第一WebKit浏览器代码做出相应修改后得到的,其中,第一WebKit浏览器代码中相应函数接口与UI编译模块102不兼容,因此需进行修改,例如,本发明实施例中该函数为d->frame->loader()->load函数;第一WebKit浏览器代码中还有与UI编译模块102有冲突的函数,需将其屏蔽,例如,本发明实施例中该函数为ASSERT()。UI编译模块102还为代码调试提供平台。其中,UI编译模块102可以是具有UI接口的相应平台。较佳的,本发明实施例中UI编译模块102可以具体为Qt平台。如果Android操作系统版本为1.5以上,则Qt开发包需要使用Qt4.5及以上的版本,例如,可以使用qt-x11-opensource-src-4.5.0.tar.gz。UI编译模块102对第二WebKit浏览器代码进行编译,在编译之前,执行如下命令:
        $>export PATH=<Qt library path>/bin:${PATH}    //将Qt开发包的路径导入系统中;
        $>webkit/WebKitTools/Scripts/build-webkit--debug    //使用WebKit的官方编译脚本编译出一个DEBUG版本的第二WebKit代码。
其中,webkit/WebKitTools/Scripts/build-webkit是WebKit浏览器的官方编译脚本,因为编译出的第二WebKit代码可以使用gdb进行跟踪调试,所以需要编译出一份携带调试信息的DEBUG版本的第二WebKit代码,因此需要指定“--debug”参数。以上命令的作用是将Qt开发包,例如以上描述的qt-x11-opensource-src-4.5.0.tar.gz按照其路径导入编译环境中。执行以上命令后可进行编译,编译完成后,生成一份DEBUG版本的第二WebKit代码。此时,执行如下命令:
      $>gdb QtTestBrowser    //使用gdb进行调试。
就可以由调试模块103(本发明实施例中可具体为gdb)开始对该DEBUG版本的第二WebKit代码进行调试。由于UI编译模块102没有底层接口限制,调试模块103可以正常运行,因此可以正常对该第二WebKit代码进行调试,通过比对模块104将Android模块101调试过程及UI编译模块102调试过程进行对比,尤其需比对Android模块101调试过程无法执行之处的代码,根据UI编译模块102调试过程对该处代码的调试结果,更正Android模块101调试过程中该处的错误代码,从而实现了在Android模块101上对第二WebKit浏览器代码进行编译及调试。
调试模块103用于在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试。Android模块101对第一WebKit浏览器代码进行编译,生成一份DEBUG版本的第一WebKit代码,及UI编译模块102对第二WebKit浏览器代码进行编译,生成一份DEBUG版本的第二WebKit代码。调试模块103分别在Android模块101中及UI编译模块102中对DEBUG版本的第一WebKit代码及第二WebKit代码进行调试。在调试过程中,调试模块103需判断Android模块101调试过程是否在某处无法继续执行,如果Android模块101调试过程在某处无法继续执行,则比对模块104将Android模块101调试过程中该处代码与UI编译模块102调试过程中该处代码进行比对,根据UI编译模块102对该处代码的调试结果,更正Android模块101调试过程中的该处代码,使Android模块101调试过程继续顺利进行,如此一直到调试结束,从而调试模块103完成了在Android模块101中对第一WebKit浏览器代码的调试。较佳的,本发明实施例中调试模块103可以具体为gdb程序调试工具。
比对模块104用于根据UI编译模块102调试过程中相应调试结果更正Android模块101调试过程中相应错误代码。当调试模块103判断出Android模块101调试过程在某处无法继续执行,则比对模块104具体用于将Android模块101调试过程及UI编译模块102调试过程进行对比,根据UI编译模块102调试过程的调试结果更正Android模块101的调试过程中相应错误代码。调试模块103在Android模块101中对第一WebKit代码进行调试,及在UI编译模块102中对第二WebKit代码进行调试,在调试过程中,如果Android模块101调试过程在某代码处无法继续执行,则比对模块104将Android模块101调试过程中该处代码与UI编译模块102调试过程中该处代码进行比对,根据UI编译模块102对该处代码的调试结果,更正Android模块101调试过程中的该处代码,使Android模块101调试过程继续顺利进行,如此一直到调试结束,从而调试模块103完成了在Android模块101中对第一WebKit浏览器代码的调试。或者,第一WebKit代码及第二WebKit代码中每行代码都有其相应的代码标识,例如,第一行代码对应代码标识‘1’,第二行代码对应代码标识‘2’等,并且,第一WebKit代码及第二WebKit代码中相应行的代码所对应的代码标识可以相同,例如,第一WebKit代码及第二WebKit代码中的第一行代码都对应代码标识‘1’,其中,第一行代码对应的功能相同;或者第一WebKit代码及第二WebKit代码中相应行的代码所对应的代码标识可以相应,例如,第一WebKit代码中第一行代码对应标识‘1’,第二WebKit代码中第一行代码对应标识‘1’,如果Android模块101调试过程在某代码处无法继续执行,则根据第一WebKit代码中该行代码所对应的代码标识在第二WebKit代码中查询,根据UI编译模块102中该代码标识所对应的代码的调试结果,更正Android模块101调试过程中的该处错误代码。
参见图2,所述装置还包括移植模块105。
移植模块105用于将WebKit浏览器代码从Android模块101中移植到UI编译模块102中。WebKit自身具有良好的跨平台特性,因此,在将Android模块101中的WebKit浏览器代码移植到UI编译模块102中时,只需要对WebKit浏览器代码进行少量的修改即可。其中,修改前的WebKit浏览器代码称为第一WebKit浏览器代码,修改后的WebKit浏览器代码称为第二WebKit浏览器代码。第一WebKit浏览器代码中需改动文件的清单如下:
WebKit/qt/Api/qwebframe.cpp                 1
WebCore/platform/KURL.cpp                   2
WebCore/html/HTMLSelectElement.cpp          3
其中,文件1,即qwebframe文件,负责管理浏览器页面的框架;文件2,即KURL文件,是URL(Uniform Resource Locator,统一资源定位)的封装;文件3,即HTMLSelectElement文件,是HTML(Hypertext Markup Language,超文本链接标示语言)的选择框。代码详细改动过程如下:
在源码文件WebKit/qt/Api/qwebframe.cpp内,即文件1内:
         QWebFrame::QWebFrame(QWebPage*parent,QWebFrameData
*frameData)
          {
                  ……
                  d->frame->loader()->load(request,frameData->name);
                  ……
          }
修改为:
          QWebFrame::QWebFrame(QWebPage*parent,QWebFrameData
*frameData)
          {
         ……
d->frame->loader()->load(request,frameData->name,false);//在WebKit内核版本中,d->frame->loader()->load函数有三个参数,而QWebFrame类的实现函数由于版本较旧,使用的d->frame->loader()->load函数只有两个参数,因此在将WebKit浏览器代码移植到Qt平台时,需要给该函数增加一个参数,否则编译无法通过,也无法实现预定的功能。下同;
                  ……
          }
          void  QWebFrame::load(const QNetworkRequest&req,
                    QNetworkAccessManager::Operation operation,const
QByteArray&body)
          {
               ……
               d->frame->loader()->load(request);
               ……
          }
修改为:
          void  QWebFrame::load(const QNetworkRequest&req,
                   QNetworkAccessManager::Operation operation,const
QByteArray&body)
          {
                ……
                d->frame->loader()->load(request,false);
                ……
          }
              void QWebFrame::setHtml(const QString&html,const QUrl
&baseUrl)
              {
                       ……
                       d->frame->loader()->load(request,substituteData);
                       ……
              }
修改为:
              void QWebFrame::setHtml(const QString&html,const QUrl
&baseUrl)
              {
                       ……
                d->frame->loader()->load(request,substituteData,false);
                       ……
              }
              void QWebFrame::setContent(const QByteArray&data,const
QString&mimeType,coBst QUrl&baseUrl)
              {
                        ……
                        d->frame->loader()->load(request,substituteData);
                        ……
              }
修改为:
            void QWebFrame::setContent(const QByteArray&data,const
QString&mimeType,coBst QUrl&baseUrl)
              {
                        ……
              d->frame->loader()->load(request,substituteData,false);
                      ……
           }
在源码文件WebCore/platform/KURL.cpp内,即文件2内:
          KURL::KURL(const char*url)
          {
                ……
                ASSERT(url==m_string);
                ……
          }
修改为:
          KURL::KURL(const char*url)
          {
                ……
                #if!PLATFORM(QT)    //在使用Qt平台进行编译时,ASSERT()可以通过,但在运行时该函数却会导致程序崩溃。鉴于ASSERT()函数对浏览器的功能没有任何影响,因此此处通过一个编译器预处理选项将其所包含的对源码的编译功能进行了屏蔽,使其无法进行编译,也就无法运行。下同;
                       AS SERT(url==m_string);
                  #endif
                  ……
              }
              KURL::KURL(const String&url)
              {
                    ……
                   AS SERT(url==m_string);
                   ……
            }
修改为:
            KURL::KURL(const String&url)
            {
               ……
               #if!PLATFORM(QT)
                       ASSERT(url==m_string);
                #endif
                ……
            }
在源码文件WebCore/html/HTMLSelectElement.cpp内,即文件3内:
            HTMLSelectElement::HTMLSelectElement(const QualifiedName&
tagName,Document*doc,HTMLFormElement*f)
               {
                      ……
             ASSERT(hasTagName(selectTag)‖hasTagName(keygenTag));
                      ……
               }
修改为:
               HTMLSelectElement::HTMLSelectElement(const
QualifiedName&tagName,Document*doc,HTMLFormElement*f)
               {
                    ……
                    #if!PLATFORM(QT)
             ASSERT(hasTagName(selectTag)‖hasTagName(keygenTag));
                       #endif
                ……
           }
其中,凡是函数接口与UI编译模块102有冲突的,均需修改其接口,例如,本发明实施例中WebKit浏览器代码中的d->frame->loader()->load函数均需要修改;凡是与UI编译模块102有冲突的函数,均需要屏蔽,例如,本发明实施例中WebKit浏览器代码中的ASSERT()函数均需要屏蔽。
移植模块105在完成以上代码修改后,即可将Android模块101中的第二WebKit浏览器代码移植到UI编译模块102中,由UI编译模块102开始对该第二WebKit浏览器代码的编译过程。
下面通过实现流程来介绍代码调试的方法。
本发明实施例介绍代码调试的主要方法。参见图3,方法流程如下:
步骤301:Android模块101对第一WebKit浏览器代码进行编译,得到第一WebKit代码。
步骤302:UI编译模块102对第二WebKit浏览器代码进行编译,得到第二WebKit代码。
步骤303:调试模块103在Android模块101中对第一WebKit代码进行调试。
步骤304:调试模块103在UI编译模块102中对第二WebKit代码进行调试。
步骤305:比对模块104根据UI编译模块102调试过程中相应调试结果更正Android模块101调试过程中相应错误代码。
本发明实施例介绍代码调试的详细方法。参见图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:调试模块103在Android模块101上对第一WebKit代码进行调试。
步骤406:调试模块103在UI编译模块102上对第二WebKit代码进行调试。
其中,步骤405及步骤406没有先后顺序,可以以任意顺序进行,也可以同时进行。
步骤407:调试模块103判断Android模块101调试过程是否在某处无法继续执行。如果判断结果为是,继续步骤408,否则继续步骤405。
步骤408:比对模块104根据UI编译模块102调试过程中相应代码处的调试结果更正Android模块101调试过程中相应错误代码。
本发明实施例中通过查找代码标识来更正Android模块101调试过程中相应错误代码。参见图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:调试模块103在Android模块101上对第一WebKit代码进行调试。
步骤506:调试模块103在UI编译模块102上对第二WebKit代码进行调试。
其中,步骤505及步骤506没有先后顺序,可以以任意顺序进行,也可以同时进行。
步骤507:调试模块103判断Android模块101调试过程是否在某处无法继续执行。如果判断结果为是,继续步骤508,否则继续步骤505。
步骤508:比对模块104根据Android模块101调试过程中无法执行之处的代码的代码标识,查询UI编译模块102调试过程中相应代码标识所对应的代码。
步骤509:比对模块104根据UI编译模块102调试过程中相应代码标识所对应的代码更正Android模块101调试过程中无法执行之处的代码标识所对应的代码。
本发明实施例中,Android模块101对第一WebKit浏览器代码进行编译,得到第一WebKit代码,UI编译模块102对第二WebKit浏览器代码进行编译,得到第二WebKit代码;调试模块103在Android模块101中对第一WebKit代码进行调试,及在UI编译模块102中对第二WebKit代码进行调试;比对模块104根据UI编译模块102调试过程中相应调试结果更正Android模块101调试过程中相应错误代码。从而实现了利用gdb对WebKit浏览器代码的正确调试,提升了WebKit浏览器的开发效率。其中,还包括移植模块105,用于将WebKit浏览器代码从Android模块101移植到UI编译模块102,在移植前需对WebKit浏览器代码作出相应更改,以使其与UI编译模块102兼容。并且,在根据UI编译模块102调试过程中相应调试结果更正Android模块101调试过程中相应错误代码时,可以通过查询代码所对应的代码标识来实现更正,使操作过程更加方便、快速,也更具条理性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种代码调试的装置,其特征在于,包括:
操作系统Android模块,用于对第一浏览器内核WebKit浏览器代码进行编译,生成第一WebKit代码;
用户界面UI编译模块,用于对第二WebKit浏览器代码进行编译,生成第二WebKit代码;
调试模块,用于在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;
比对模块,用于根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。
2.如权利要求1所述的装置,其特征在于,用于编译得到所述第二WebKit代码的所述第二WebKit浏览器代码是对第一WebKit浏览器代码进行修改后得到的。
3.如权利要求2所述的装置,其特征在于,所述修改包括修改函数接口和屏蔽与UI编译模块有冲突的函数,或所述修改包括修改函数接口,或所述修改包括屏蔽与UI编译模块有冲突的函数。
4.如权利要求1所述的装置,其特征在于,所述比对模块还用于将Android模块调试过程中无法执行之处的代码及UI编译模块调试过程中该处代码进行对比,在不一致时,根据UI编译模块的调试结果,更正Android模块调试过程中该处的错误代码。
5.如权利要求1所述的装置,其特征在于,所述比对模块还用于根据Android模块调试过程中无法执行之处的代码的代码标识,在UI编译模块调试过程中查找所述代码标识,根据UI编译模块调试过程中所述代码标识对应的代码,更正Android模块调试过程中无法执行之处的代码。
6.一种代码调试的方法,其特征在于,包括以下步骤:
Android模块对第一WebKit浏览器代码进行编译,得到第一WebKit代码;
UI编译模块对第二WebKit浏览器代码进行编译,得到第二WebKit代码;
调试模块在Android模块中对第一WebKit代码进行调试,及在UI编译模块中对第二WebKit代码进行调试;
比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码。
7.如权利要求6所述的方法,其特征在于,用于编译得到所述第二WebKit代码的所述第二WebKit浏览器代码是对第一WebKit浏览器代码进行修改后得到的。
8.如权利要求7所述的方法,其特征在于,所述修改包括修改函数接口和屏蔽与UI编译模块有冲突的函数,或所述修改包括修改函数接口,或所述修改包括屏蔽与UI编译模块有冲突的函数。
9.如权利要求6所述的方法,其特征在于,比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码的步骤包括:比对模块将Android模块调试过程中无法执行之处的代码及UI编译模块调试过程中该处代码进行对比,在不一致时,根据UI编译模块的调试结果,更正Android模块调试过程中该处的错误代码。
10.如权利要求6所述的方法,其特征在于,比对模块根据UI编译模块调试过程中相应调试结果更正Android模块调试过程中相应错误代码的步骤包括:比对模块根据Android模块调试过程中无法执行之处的代码的代码标识,在UI编译模块调试过程中查找所述代码标识,根据UI编译模块调试过程中所述代码标识对应的代码,更正Android模块调试过程中无法执行之处的代码。
CN201010283591XA 2010-09-15 2010-09-15 一种代码调试的方法及装置 Expired - Fee Related CN101944061B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010283591XA CN101944061B (zh) 2010-09-15 2010-09-15 一种代码调试的方法及装置
PCT/CN2011/072455 WO2012034395A1 (zh) 2010-09-15 2011-04-06 一种代码调试的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010283591XA CN101944061B (zh) 2010-09-15 2010-09-15 一种代码调试的方法及装置

Publications (2)

Publication Number Publication Date
CN101944061A true CN101944061A (zh) 2011-01-12
CN101944061B CN101944061B (zh) 2012-09-12

Family

ID=43436058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010283591XA Expired - Fee Related CN101944061B (zh) 2010-09-15 2010-09-15 一种代码调试的方法及装置

Country Status (2)

Country Link
CN (1) CN101944061B (zh)
WO (1) WO2012034395A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012034395A1 (zh) * 2010-09-15 2012-03-22 青岛海信移动通信技术股份有限公司 一种代码调试的方法及装置
CN109032604A (zh) * 2018-07-03 2018-12-18 福州瑞芯微电子股份有限公司 一种可运行在Android系统上的Qt库的生成方法
CN110348219A (zh) * 2019-06-13 2019-10-18 晶晨半导体(上海)股份有限公司 版本比对方法、系统、计算机设备及可读存储介质
CN111078540A (zh) * 2019-11-29 2020-04-28 四川九洲空管科技有限责任公司 基于qt开发通用航空飞行服务软件内存异常检测定位方法
CN114442506A (zh) * 2021-12-06 2022-05-06 埃夫特智能装备股份有限公司 一种基于虚拟机器人控制器仿真调试平台及其调试方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530425A (zh) * 2013-11-01 2014-01-22 哈尔滨商业大学 基于对象关联映射的Android终端访问远程数据库代码生成系统和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090082008A1 (en) * 2007-09-21 2009-03-26 Per Thorell Mobile Phone Code Debugging Method and Apparatus
CN101719093A (zh) * 2009-12-09 2010-06-02 上海普元信息技术有限责任公司 企业Web应用系统中实现跨浏览器Javascript调试的系统及其方法
JP2010141598A (ja) * 2008-12-11 2010-06-24 Ricoh Co Ltd 画像形成装置、表示制御方法、及び表示制御プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005037232A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Analyse von Abläufen in einem Rechnersystem mit mehreren Ausführungseinheiten
US20090328005A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Debugger call stack caching
CN101430662B (zh) * 2008-12-09 2010-10-06 东信和平智能卡股份有限公司 Java语言程序与虚拟机程序共同调试的方法
CN101944061B (zh) * 2010-09-15 2012-09-12 青岛海信移动通信技术股份有限公司 一种代码调试的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090082008A1 (en) * 2007-09-21 2009-03-26 Per Thorell Mobile Phone Code Debugging Method and Apparatus
JP2010141598A (ja) * 2008-12-11 2010-06-24 Ricoh Co Ltd 画像形成装置、表示制御方法、及び表示制御プログラム
CN101719093A (zh) * 2009-12-09 2010-06-02 上海普元信息技术有限责任公司 企业Web应用系统中实现跨浏览器Javascript调试的系统及其方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012034395A1 (zh) * 2010-09-15 2012-03-22 青岛海信移动通信技术股份有限公司 一种代码调试的方法及装置
CN109032604A (zh) * 2018-07-03 2018-12-18 福州瑞芯微电子股份有限公司 一种可运行在Android系统上的Qt库的生成方法
CN109032604B (zh) * 2018-07-03 2022-02-22 瑞芯微电子股份有限公司 一种可运行在Android系统上的Qt库的生成方法
CN110348219A (zh) * 2019-06-13 2019-10-18 晶晨半导体(上海)股份有限公司 版本比对方法、系统、计算机设备及可读存储介质
CN111078540A (zh) * 2019-11-29 2020-04-28 四川九洲空管科技有限责任公司 基于qt开发通用航空飞行服务软件内存异常检测定位方法
CN111078540B (zh) * 2019-11-29 2023-03-07 四川九洲空管科技有限责任公司 基于qt开发通用航空飞行服务软件内存异常检测定位方法
CN114442506A (zh) * 2021-12-06 2022-05-06 埃夫特智能装备股份有限公司 一种基于虚拟机器人控制器仿真调试平台及其调试方法

Also Published As

Publication number Publication date
CN101944061B (zh) 2012-09-12
WO2012034395A1 (zh) 2012-03-22

Similar Documents

Publication Publication Date Title
US8001519B2 (en) Model driven development including aspect integration tool
CN101944061B (zh) 一种代码调试的方法及装置
CN102053836B (zh) 一种Android应用开发的版本管理工具的实现方法
CN102819492B (zh) 一种基于Android的关键字驱动自动化测试框架
CN104714788B (zh) 一种软件安装包自动生成的方法及装置
CN102622470A (zh) 一种通用汽车代码转换方法
CN1928816A (zh) 嵌入式系统软件的模型驱动与构件化开发方法
CN101866315B (zh) 软件开发工具的测试方法及系统
CN111309292B (zh) 一种基于MATLAB/Simulink的全模型可执行程序构建方法
CN102693121A (zh) 一种跨平台手机应用的自动开发制作系统及实现方法
CN111782513B (zh) 基于dll的卫星地面通用自动化测试方法
CN104503819A (zh) 一种面向异os的汇编器及汇编移植方法
CN104090765A (zh) 一种手机游戏转网页游戏的方法及装置
JP2010250378A (ja) ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
Gómez et al. CRUDyLeaf: a DSL for generating spring boot REST APIs from entity CRUD operations
US20130019225A1 (en) Incremental Inferences for Developing Data Models
CN109753281B (zh) 一种基于图形化编程的微电网能量管理策略可视化开发工具
CN102566481A (zh) 一种基于c语言的plc控制系统及其实现方法
Braunisch et al. Generative and Model-driven SDK development for the Industrie 4.0 Digital Twin
Zhang et al. Automated unit testing intelligent agents in PDT
Castrejón et al. Model2Roo: A model driven approach for web application development based on the Eclipse Modeling Framework and Spring Roo
CN102799462B (zh) 基于Eclipse平台的脚本引擎装置及Eclipse平台的配置方法
CN112860316B (zh) openEular开源系统的内核及BSP移植方法
CN113360156B (zh) 一种ios编译方法及相关设备
CN114064218A (zh) 用于机器学习组件中的镜像生成方法、系统、介质及应用

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120912

Termination date: 20190915

CF01 Termination of patent right due to non-payment of annual fee