通过从在本机模式中执行转变为在经解释的模式中执行来调试本机代码的制作方法

文档序号:9916561阅读:280来源:国知局
通过从在本机模式中执行转变为在经解释的模式中执行来调试本机代码的制作方法
【专利说明】通过从在本机模式中执行转变为在经解释的模式中执行来调 试本机代码
[0001 ] WS
[0002] 编译器能通过将源代码编译成可被特定处理器执行的代码来产生可执行代码。这 种类型的因处理器而异的代码被称为"本机代码",即能被特定类型的处理器执行但不能被 任意类型的处理器执行的机器指令。另一类型的编译器可接收源代码并产生不是因处理器 而异的中间代码或虚拟机字节代码。中间代码通常由中间语言编译器(例如,即时(JIT)编 译器)接收,并就在程序执行之前被编译为本机代码。中间代码不是因平台而异的。
[0003] 解释器读取源代码或中间代码并逐语句地来执行代码而无需将代码转换成本机 代码。典型地,对代码进行解释慢于执行本机代码。对代码进行解释通常慢于将中间代码 JIT编译为本机代码并执行本机代码。
[0004] 对经解释的代码的调试器的实现通常没有对本机代码的调试器的实现那么复杂。 然而,对于本机代码的调试器的响应时间通常快于对经解释的代码的调试器的响应时间。 调试器通常通过以下向用户提供控制程序的执行的能力:步入或步出函数、步跃函数、暂停 和恢复执行、检查变量的当前值或栈位置等。
[0005] 挺塗
[0006] 如本文中描述的双模式调试器可调试表示程序的本机代码。响应于在被调试的程 序中检测到定义的调试跳出(bailout)条件,调试器可停止调试表示程序的本机代码并且 可转变为调试表示程序的对应的经解释的代码。在本机模式中,调试器可调试表示程序的 本机代码。提供对程序变量的当前值和/或栈信息的检查和/或修改的调试操作可在本机模 式中执行。在本机模式调试中,每当变量被保存到寄存器内(例如,当变量在程序中被定义 时),该值也可被保存到函数的栈位置。被调试的函数的变量可被存储在栈中的为被调试的 程序保留的特定本地化区域中。栈的该同一区域可在编译为本机代码期间被使用以供溢出 (即,当存在比计算设备所具有的寄存器更多的活动变量时,变量可从寄存器"溢出"到存储 器)。栈位置可被调试器使用来获得和改变变量的值。
[0007] 响应于检测到跳出条件,对表示程序的本机代码的调试可停止。解释器可接收表 示程序的经解释的代码,该接收到的经解释的代码对应于被调试的本机代码,并且解释器 可恢复对该程序的、在经解释的模式中运行的经解释的代码的调试。例如,控制被调试的程 序的执行的调试操作可在经解释的模式中运行。执行控制操作可通过异步中断、步进、中断 点和/或在异常操作上的中断来实现。解释器模式调试可被用于调试最顶层的函数(其变量 值位于栈的最顶层帧中的函数),同时使用本机模式来调试程序的其它部分。
[0008] 调试器可在经定义的跳出点从在本机模式中调试转变为在经解释的模式中调试。 与调试器相关联的跳出引擎可接收跳出记录,该跳出记录包括在调试器下执行的本机代码 的当前状态。跳出引擎可实例化解释器的实例,创建解释器的该实例的解释器栈帧并可用 来自跳出记录的值来填充为解释器的该实例创建的解释器栈帧。对程序的调试可在该程序 的类似的对应的经解释的代码上恢复。调试跳出点是程序中的在其处本机模式调试可转变 为经解释的模式调试的位置,如果某些跳出条件被满足的话。可定义针对程序的调试跳出 点,诸如在函数的开始处、循环的回边(back edge)处、当函数返回时、当对助手函数或库的 调用返回时或当遇到调试器语句时。当在调试会话中遇到调试跳出点时,运行时调试标志 的状态以及栈帧的栈深度校验可被用于确定是否满足调试跳出条件。如果满足调试跳出条 件,则与在调试器下执行的本机代码相对应的代码可被发送到解释器并且调试可在对应的 经解释的代码上继续。
[0009] 提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本 概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护 主题的范围。
[0010] 附图简述
[0011] 在附图中:
[0012] 图Ia示出了包括呈现来自接收到的文档的页的浏览器应用的系统100的示例;
[0013] 图Ib示出根据在此所述的主题的各方面的包括可从执行经编译的代码变换到解 释代码的运行时引擎的系统200的示例;
[0014] 图Ic示出根据在此所述的主题的各方面的包括可从执行经编译的代码变换到解 释代码的运行时引擎的系统300的示例;
[0015]图Id示出根据本文中公开的主题的各方面的系统400的示例,该系统可通过从本 机模式变换到经解释的模式来调试代码;
[0016] 图2示出根据在此所述的主题的各方面的从调试本机代码转变到调试经解释的代 码的方法250的示例;
[0017] 图3是根据此处所公开主题的各方面的计算环境的示例的框图;以及
[0018] 图4是根据此处所公开的主题的各方面的集成开发环境(IDE)的示例的框图。
[0019] 详细描述
[0020] 抵莖
[0021] 可通过将程序编译为本机代码并调试该本机代码来调试该程序。在该程序中经定 义的点处,调试可从本机模式转变到经解释的模式,并且调试可在经解释的代码上继续。涉 及执行控制的调试操作:暂停执行、继续执行、步入、步出或步跃代码片段等,可在经解释的 模式中发生。涉及对变量的检查和修改的调试操作可在本机模式中发生。双模式调试器可 将本机模式调试的速度与经解释的模式调试的简单性组合在一起。
[0022] 通过从在本机模式中执行转变为在解释器模式中执行来调试本机代码
[0023]图Ia示出根据在此所述的主题的一些方面的web浏览环境100的示例。如在图Ia中 所示,环境100可以包括下述一个或多个:计算设备102、服务器104、网络106以及浏览器应 用108 Jeb浏览环境100可以包括本领域中已知的其它组件。
[0024]计算设备102可以是任何类型的固定或移动计算设备,包括桌面计算机(例如,个 人计算机等)、移动计算机或计算设备(例如,:Palm_设备、RIMfiteci<berry_设备、个人数 字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机(例如,Apple(苹果)iPad?)、上网 本等等)、移动电话(例如,蜂窝电话、智能电话,诸如Apple iPhone、Google(谷歌)Android (安卓)?手机、Microsoft(微软)Wind〇ws?手机等)或其它类型的移动设备。服务器104可 在包括一个或多个服务器的一个或多个计算机系统中实现,其可以是在此描述的任何类型 的计算设备或能够实现在此描述的相应功能的以其它方式知晓的计算设备。
[0025] 计算设备102和服务器104可通过网络106来通信地耦合。网络106可包括一个或多 个通信链路和/或通信网络,诸如PAN(个域网)、LAN(局域网)、WAN(广域网)、或网络的组合, 诸如因特网。可使用各种链路来将计算设备102和服务器104通信地耦合到网络106,该各种 链路包括有线和/或无线链路,如IEEE 802.11无线局域网(WLAN)无线链路、全球微波互联 接入(Wi-MAX)链路、蜂窝网络链路、无线个人区域网络(PAN)链路(例如,BIuetooth?链路)、 以太网链路、USB链路等等。
[0026] 浏览器应用108可以是可在计算设备102上执行的程序。浏览器应用108可使得网 络信息资源能被检索、呈现和遍历。可使用网络地址(诸如统一资源标识符(URI))来通过浏 览器应用108检索信息资源或对象。信息资源的示例包括网页、图像、视频,以及其它形式的 内容。出现在信息资源中的超链接使得用户能够容易地将他们的浏览器导航到相关的资 源。浏览器应用108的示例包括但不限于由华盛顿州雷蒙德市的微软公司开发的Internet Explorer?、由加利福尼亚州芒廷维市的Mo z i 11 a公司开发的Mo z i 11 a Fir efox?、由加利福 尼亚州库珀蒂诺市的Apple公司开发的Safari?,以及由加利福尼亚州芒廷维市的 Google? Chrome 〇
[0027] 浏览器应用108可以通过网络106从服务器104检索文档112。文档112可以是包括 标记语言的代码的web文档,标记语言诸如超文本标记语言(HTML)、动态HTML(DHTML)、可扩 展HTML(XHTML)、可扩展标记语言(XML)等。文档112可以包括DOM(文档对象模型)对象114和 一个或多个脚本116A0M对象114可以包括根据DOM规范在文档112中所表示的一个或多个 对象,该DOM规范是用于表示对象并与对象进行交互的跨平台且独立于语言的规范。DOM对 象114可包括被直接包括在文档112中的对象、和/或由文档112引用的并分开地从服务器 104或其它服务器检索的对象。脚本116包括根据动态语言(例如,JavaS Cript、VBScript、 AJAX、Py thon、Per 1等)来格式化的代码,该格式化的代码使得能够对DOM对象114做出改变, 包括基于诸如用户输入、环境情况(例如,一天中的时间或其它变量)等因素的改变。脚本 116的代码可在进行中访问和修改DOM对象114的对象,而无需返回到服务器104。
[0028] 浏览器应用108可以接收(例如加载)文档112。浏览器应用108可包括浏览器引擎 (例如,布局引擎或呈现引擎),该浏览器引擎格式化文档112的信息并显示经格式化的信 息。例如,如图Ia显示的,浏览器应用108可基于由计算设备102的显示器110显示的文档112 来生成页面118。浏览器应用108可被配置成执行一个或多个脚本116,该一个或多个脚本 116被嵌入在文档112中或与文档112分开但与文档112相关联。
[0029]图Ib示出根据在此所述的主题的一些方面的系统200的框图。系统200可包括一个 或多个计算机或计算设备,例如包括诸如处理器143等之类的一个或多个处理器、存储器 145、执行控制器309、解释器311、诸如JIT(即时)编译器313之类的编译器、存储315、机器代 码执行器317和跳出引擎337的计算设备102。执行控制器309、解释器311、诸如JIT编译器 313的编译器、存储315、机器代码执行器317和跳出引擎337可被实现为一个或多个程序模 块,当所述程序模块被加载到存储器145中时使得所述一个或多个处理器143等分别执行归 因于执行控制器309、解释器311、诸如JIT编译器313的编译器、机器代码执行器317和跳出 引擎337的动作。系统200可包括本领域已知的、未被显示的其它组件。
[0030]执行控制器309、解释器311和/或JIT编译器313可以接收从源代码生成的字节代 码。源代码可以是以编程语言编写的任意源代码,例如但不局限于动态脚本语言(诸如但不 限于JavaScript、VBScript、Python等等)。可以解析源代码并从经解析的源代码中生成字 节代码。基于字节码325和简档、试探法或其它信息,执行控制
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1