远程记录机制的制作方法

文档序号:6426223阅读:165来源:国知局
专利名称:远程记录机制的制作方法
技术领域
至少一个实施例涉及计算机系统,并且更具体地涉及远程记录在计算机系统上执行的计算机代码的调试信息。
背景技术
随着计算机代码变得更复杂,包括驱动器和程序代码的代码调试变得更难以实现。在远程计算的情形中,因为必要信息并非总是发送至远程编程员以帮助调试过程时,调试代码变得甚至更难。目前,利用串行端口将调试信息或者发送至执行代码的计算机的显示器或者传输至文件。通过利用程序代码中的打印函数来实现通过发送信息至屏幕的调试。在代码执行期间发生程序错误时,此打印函数运行调试子函数。在此调试过程期间停止代码的执行。使用打印库,调试过程可在两个方向的其中一个上进行。它可使用打印库和控制台库并且利用串行端口驱动器生成文件。串行端口,即UART (通用异步收发器)装置被限制为大约每秒115200比特的速度。此速度比正在调试的程序的速度慢得多并且由于此延迟可能会导致甚至更多的错误发生。一旦将数据写入本地文件,就重新开始程序代码的执行。打印库还可使用图形加速器(GA)库。GA库控制显示适配器驱动器。利用此驱动器将调试信息发送至显示器。然而,通常显示器太小而不能容纳所有必要信息并且显示器可能难以读取。一旦将数据写入显示器,就重新开始程序代码的执行。另外,这些打印函数使用大量的系统时间和资源,这可能会延迟后面代码的执行。 尤其是如果程序在实时环境中运行的话,此延迟可能实际上隐藏代码中后面的问题。


图1是示出依照本发明实施例的计算机系统的一个实施例的示意图。图2是示出依照本发明实施例实施的逻辑和操作的进一步细节的流程图。图3是调试信息节点的实施例的示意图。图4是示出依照本发明实施例实施的逻辑和操作的进一步细节的流程图。图5是示出用于实现本发明实施例的计算机系统的实施例的图示。
具体实施例方式下面描述了用于计算机系统固件的可管理性扩展机制的方法和系统。在下面的描述中,陈述了许多特定的细节,例如涉及可扩展固件接口(EFI)框架规范的实施例,以便提供对本发明的透彻理解。对本领域的技术人员来说将显而易见的是,没有这些特定的细节也可以实现本发明。在其他情形中,未详细描述公知的设计和实现以便使描述更简洁。图1示出依照本发明实施例的计算机系统100。计算机系统100包括处理器102、 存储器104、耦合至总线108的固件存储器110和网络适配器112。示范的计算机系统100 可包括但不限于个人计算机、网络工作站、便携式计算机、手持式或掌上型计算机、个人数字助理(PDA)、无线通信装置、电视游戏系统和数字照相机。固件存储器110是非易失性存储装置,其包括但不限于闪存装置、可擦可编程只读存储器(EPROM)和电子可擦可编程只读存储器(EEPROM)。固件存储器110至少存储包括可由计算机系统100执行的指令和/或数据的固件图像。在一个实施例中,固件图像包括用于个人计算机的BIOS固件。在另一个实施例中,固件图像包括在安装在个人计算机上的扩展板的固件存储装置中存储的固件。在又一个实施例中,固件图像是在无线电话、PDA或数字照相机的固件存储装置中存储的固件。在一个实施例中,固件存储器110包括依照EFI框架规范的指令和/或数据。当今的固件体系结构包括用于除存储在平台的BIOS装置(例如闪存)中的BIOS代码所提供的之外扩展BIOS功能性的规定。更具体地,可扩展固件接口允许从各种不同资源来加载以固件模块和驱动器形式的固件,各种不同资源包括主要和次要闪速装置、选项R0M(只读存储器)、各种持久性存储装置(例如硬盘、CD ROM(光盘只读存储器)等),以及甚至通过计算机网络来加载。在EFI框架的一个实现中,初始化过程包括存储在计算机系统100上的固件的各种执行阶段。这些执行阶段包括预EFI初始化(PEI)阶段、驱动器执行环境(DXE) 阶段和EFI 1.0执行阶段。这些阶段使得各种平台装置和服务的初始化以及设置成为可能,并且允许依照在EFI 1. 0执行阶段之后的OS运行阶段来引导操作系统。在一个实施例中,固件存储器110是闪存装置。本领域的技术人员将会理解,可使用用于维持固件代码和/或数据的其他类型的持久性存储装置并且本文所讨论的使用闪速装置的实施例仅仅是示范性的。闪存是允许制造商和(利用适当硬件/软件)的最终用户电擦除并重新编程信息的非易失性存储技术。闪存通常以被称为块的存储单位进行擦除而不是以位的级别进行擦除,其中当块被擦除时给定块中的所有位被转换到预定极性(即,逻辑电平)。在一个实施例中,块大小是64k。在另一个实施例中,块大小是32k。在一种常用类型的闪存、例如由 Intel公司制造的闪存装置中,通过将存储块中的所有位设为1而电子擦除存储块。接着可通过将单独的位翻转为0以形成与数据相对应的适当的位模式而将数据写入块。在其他类型的闪速装置中,被擦除的逻辑状态为全0,并且将数据写入这些装置包括将单独的位变为 1。注意到,在常规的闪速装置中,单独的位无法从改变的(即设定的)逻辑电平翻转回到被擦除的逻辑电平;为了更新块中的数据,所有位必须首先被擦除,而后被重写。依照一个实施例,存储装置106耦合至总线108。示范的存储装置包括但不限于磁驱动器、光驱动器或诸如此类。在备选实施例中,存储器106不是计算机系统100的一部分,但是可由计算机系统100进行访问。网络适配器112耦合至总线108。网络适配器或网络接口卡(NIC)在计算机系统 100和网络之间形成连接。有线NIC通常使用以太网连接并且可用于10、100和lOOOBase-T 配置。100-Base-T卡可以100Mbps的速率传送数据。有线NIC可使用ISA、PCI、PCMCIA或 PCI Xpress总线。无线NIC还允许利用例如IEEE 802. 11族和蓝牙(IEEE 802. 15)的无线规范连接到网络。在一个实施例中,网络适配器112支持EFI框架。在一个实施例中,如果存在有多个网络适配器112,则用户可确定使用任何网络适配器。然而,要求用户首先要配置运行环境。例如,可使用工具包。示范的配置指令可采用 netdebugcfg-s "ethO 514192. 168. 0. 1 514”的形式。参数“_s”指使用本文所描述的远程记录。参数“ethO”指选择名为ethO的网络适配器作为通信装置。第一个“514”表示本机端口等于“514”。本领域的技术人员将会注意到,端口通常与UDP相关联。参数“192. 168. 0. 1” 表示在其上程序正在运行的机器的IP地址,并且最后的参数“514”表示远程端口。传统上,BIOS不提供连网功能性。在一个实施例中,BIOS被重新构建以提供该功能性。在另一个实施例中,除了 BIOS外还使用EFI框架。EFI框架的一个实施例具有并入 FreeBSD TCP/IPv4协议栈的端口的、与BSD(伯克利软件分发版)套接字兼容的接口,其又利用EFI简单网络接口(SNI)协议。EFI套接字协议接口提供EFI应用工具包的核心组件的其中之一。套接字接口与网络传输无关。尽管最常用的实现连接到TCP/IPv4网络栈,但是它同样可用于TCP/IPv6、IPX、NetBEUI或Appletalk网络栈。套接字接口还是应用程序的事实上的标准连网接口。从EFI的观点看,该体系结构的最重要方面是由TCP/IPv4栈实现的套接字协议接口规范。通过实现EFI套接字协议接口,新的和/或不同的网络栈实现可以在平台上运行而无需重新编译使用它们的应用程序。参考TCP/IPv4网络栈是FreeBSD 实现的端口。这包括IPv4、TCP、UDP、ARP和ICMP的实现。该栈还包括对因特网组管理协议(IGMP)和资源预留协议(RSVP)的支持。该栈实现为可供应用程序和一个或多个EFI协议同时使用的EFI协议。对网络栈的访问是通过EFI套接字协议接口进行的。协议接口的完整描述可以在第3部分中找到。如同FreeBSD系统一样,所有的网络栈配置可以在运行时实施。示出依照本发明实施例实施的逻辑和操作的进一步细节的流程图200在图2中示出。计算机系统运行包括调试打印函数的程序或代码片段202,该调试打印函数在该代码片段执行期间发生程序错误时运行调试子函数。出于说明的目的,此计算机系统将被称为 “客户机”。在发生错误之后使客户机上代码片段202的正常执行停止并且调用调试函数。 可由执行代码202访问的网络打印驱动器(Netfrint) 204用于传送来自代码202的调试信息。在一个实施例中,可以重新编译已有的程序代码以利用新的调试函数。网络打印驱动器204接收调试信息并且代码片段202的执行立即重新开始。网络适配器可由它的网络适配器驱动器206访问。网络打印驱动器204将调试信息传输至网络适配器驱动器206,其又利用网络适配器将数据传输至远程主机用于存储或记录。出于说明的目的,远程主机被称为“服务器”。术语“服务器”包括能够接收此数据的计算机系统。这种数据的传输和存储提供了在服务器处远程调试和跟踪执行代码的能力。 在实施例中,执行程序的运行状态还可以通过客户机的网络适配器进行远程访问。因为所有调试信息直接通过网络适配器传输,而不是通过通常使用的、例如串行端口的其他装置传输,客户机的运行时间几乎未花费在传输调试信息上。例如,100M NIC可用70微秒发送1KB的数据包,而串行端口会用70毫秒传输该大小相同的包。传送操作所需要的资源是网络适配器。因此,传统上用于调试的、例如打印库的其他库是不必要的。在实施例中,服务器具有设计用来监控网络流量的程序。该程序在被执行时收集并记录自客户机传输的调试信息。该调试信息接着可由服务器进行访问。在一个实施例中, 服务器程序使用不同颜色或字体来显示自客户机接收的消息。图3示出自客户机传输至服务器的调试信息节点300的实施例。优先级(PRI)302 分量表示消息的优先级。调试信息还可包括与计算机代码执行过程中发生错误时的时间和 /或日期相对应的时间戳304。主机(客户机)ID 306还可包括在调试信息节点300中。主机ID 306唯一识别网络上的、将调试信息传输至服务器的特殊客户机。这在高度连网的情况中尤其有利,例如网吧,在这里可能以其他的方式难以确定哪个客户机正有关于执行代码的问题。调试信息节点300的一个实施例包括元数据308。元数据描述了此调试信息的程序上下文信息,它对试图定位程序代码中的错误的开发者有帮助。元数据308可包括但不限于代码的模块名314和子模块名316、用户可定义的优先级318、代码的文件名320和代码的行号322。计算机代码可以分为若干模块或部分。另外,每个模块可以进一步细分为子模块。模块名314和子模块名316表示未正确执行的特殊模块或子模块。调试信息节点300还包括调试信息312。调试信息312可包含描述变量的当前值或系统状态的若干字符。这对于程序开发者跟踪和调试源于代码的问题是有用的。开发者可按照他/她的需求来定义调试信息内容的细节。调试信息节点300的长度是受限的。调试信息节点300的最大长度是传送调试信息节点300所通过的当前网络接口的最大传输单元(MTU)的大小。在一个实施例中,调试信息节点300包括分隔符310。分隔符310包括项目名3M 和序号326。通过使用序号3 来发现由于未知原因而在传输中丢失的项。当准备传输信息节点300时,可为序号3 赋值。在一个实施例中,对于后面的节点,序号值增加1。对于所有节点300,序号应当是唯一的。一般,节点300还是连续的。程序开发者可通过检查接收的每个节点的序号3 来确定调试信息的哪一项丢失了。示出依照本发明实施例实施的逻辑和操作的进一步细节的流程图在图4中示出。 在网络打印驱动器400的一个实施例中,过滤器和节点构建器402提供了按照存储在配置模块404中的配置参数过滤输入的调试信息的能力。过滤器和节点构建器402还可利用来自配置模块404的参数来构造调试信息节点。在一个实施例中,调试信息节点是适于传输的包。在另一个实施例中,调试信息节点必须分解成包。配置模块404提供了能够从用户接收用于配置过滤器和节点构建器402的指令的用户接口。可配置的要素包括但不限于模块名、子模块名、用户定义的优先级、文件名、行号、项目名和序号。过滤器和节点构建器402使用配置模块404的参数以帮助过滤输入的调试信息。 例如,对于输入过滤器和节点构建器402的给定的调试信息,将调试信息的模块名、子模块名和用户定义的优先级与配置模块404中为这些要素设置的值进行比较。如果这些值匹配,则调试信息被过滤器和节点构建器402接受。如果这些值不匹配,则过滤器和节点构建器402不会认为调试信息有效。在一个实施例中,调度器406将由过滤器和节点构建器402创建的节点传输至网络适配器驱动器408。如果节点未能传输,则将其保存在缓冲队列410中。节点未能传输的原因包括但不限于网络适配器驱动器或者网络适配器未正确起作用、网络适配器缺失、网络上供网络适配器操作的流量太多、服务器或客户机断电以及网络故障。在另一个实施例中,没有缓冲队列410并且只是忽略失败的节点传送。在一个实施例中,缓冲队列410被存储在非易失性存储器中。即使客户机断电,也可保留存储在非易失性存储器的缓冲队列410中的节点。这允许调度器406在恢复为客户机供电之后尝试重新传输节点而不丢失在客户机运行时所收集的调试信息。在另一个实施例中,将缓冲队列410存储在易失性存储器中。可在稍后时间由调度器406重新传输存储在缓冲队列410中的节点。例如,当网络未被流量拥塞时,调度器收集存储在缓冲队列410中的节点并且尝试重新传输该节点。在一个实施例中,在客户机上执行的程序代码包括用于创建调试信息节点的指令。在此实施例中,配置模块以及过滤器和节点构建器被包括在内。程序代码创建调试信息节点并且将该节点发送至调度器406。在一个实施例中,用于将调试信息包从客户机传输至服务器的通信协议是公共网络协议,其包括但不限于UDP和TCP/IP的TCP。所用协议应当确保自客户机发送的信息到达服务器。如果协议可通过不同的子网络或因特网,则可将客户机和服务器放置成彼此远
1 O在一个实施例中,调试信息包的格式是SYSLOG协议,该协议基于UDP协议。SYSLOG 协议在许多场合通常用作网络管理格式种类。在此实施例中,SYSLOG用作通信协议,这是因为在用户端,存在有可用于接收并示出跟踪/调试信息的详细内容的客户工具。然而,传统SYSLOG未提供可由调试信息节点提供的所有信息。传统上,SYSLOG位于UDP层的顶部, 而在此实施例中,只需要网络适配器的驱动器。图5示出了用于实施本文所描述的本发明实施例的示范的计算机系统500的实施例。计算机系统500通常示为各种类型的计算机装置,包括个人计算机、膝上型计算机、工作站、服务器等;为简便起见,本文只讨论计算机系统的基本组件。计算机系统500包括处理器机架502,其中容纳了各种硬件组件,包括软盘驱动器504、硬盘506、电源(图中未示出)和母板508,母板508填充有包括耦合至一个或多个处理器512的系统存储器510的适当的集成电路。存储器510可包括但不限于动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、内存总线式动态随机存取存储器(RDRAM) 或诸如此类。处理器51 2可以是常规的微处理器,其包括但不限于htel公司的X86、 Pentium、XScale或Itanium系列的微处理器、Motorola系列的微处理器、IBM的PowerPC 微处理器或诸如此类。硬盘506可包括单个单元或多个单元,并且可以可选地驻留在计算机系统500的外部。该系统还包括引导固件装置,在该装置上存有固件,它可通常包括例如 ROM装置520或闪速装置522的非易失性存储器。母板同样可包括其他固件装置(图中未示出)。一般地,系统的处理器将包括32或64位体系结构,并且系统存储器将包括适于处理器的物理寻址方案,并且可通过相应的连接到处理器和存储器的地址和数据总线对其进行访问。用于显示由计算机系统500运行的固件、软件程序和程序模块所生成的图形和文本的监视器514被包括在内,所述图形和文本例如为系统引导期间呈现的系统信息。鼠标 516(或其他指示装置)可以连接到串行端口、USB端口或以通信方式耦合至CPU 512的其他类似的总线端口。键盘518以和鼠标516类似的方式、通过通信的方式耦合至母板508, 用于用户输入文本和命令。在一个实施例中,计算机系统500还包括网络接口卡NIC或内置NIC接口(图中未示出),用于将计算机系统500连接到例如局域网(LAN)、广域网(WAN) 或因特网的计算机网络530。所示出的实施例还包括耦合至母板508的扩展槽的可选的附加卡524。在一个实施例中,附加卡5M包括其上存有固件的选项R0M526。计算机系统500还可以可选地包括光盘只读存储器(“⑶-ROM”)驱动器528,可将⑶-ROM盘插入光盘只读存储器驱动器528 中,使得可以读取盘上的例如操作系统的可执行文件和数据或者将其移进系统MM 510和 /或硬盘506中。其他大容量存储装置可以包括在计算机系统500中。在另一个实施例中,计算机系统500是可与本发明一起使用的手持式或掌上型计算机,其有时被称为个人数字助理(PDA)。手持式计算机可能不包括硬盘或其他大容量存储器,并且将可执行程序从有绳或无线网络连接装入存储器510以由处理器512来执行。典型的计算机系统500将通常至少包括处理器515、存储器510和将存储器510耦合至处理器 512的总线(图中未示出)。将会意识到,在一个实施例中,由包括例如盘操作系统的文件管理系统的操作系统软件来控制计算机系统500,所述文件管理系统是操作系统软件的一部分。例如,本发明的一个实施例利用Microsoft Windows作为计算机系统500的操作系统。在另一个实施例中,依照本发明的教导还可使用例如但不限于Apple Macintosh操作系统、Linux操作系统、Microsoft Windows CE操作系统、Unix操作系统、3Com I^alm操作系统或诸如此类的其他操作系统。因此,本发明的实施例可用作或支持在某一形式的处理核(例如处理器512)上执行的或者以其他的方式在机器可读介质上或内部实施或实现的固件和软件代码。机器可读介质包括用于存储或传输机器(例如计算机)可读形式的信息的任何机制。例如,机器可读介质可包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存装置或诸如此类。另外,机器可读介质可包括传播信号,例如电的、光的、声的或其他形式的传播信号(例如载波、红外信号、数字信号等)。以上对本发明所示实施例的描述以及摘要中所描述的内容并不旨在是穷举的或者将本发明限定为所公开的精确形式。虽然出于说明目的在本文中描述了本发明的特定实施例和例子,但是正如相关领域的技术人员将会意识到的,在本发明范围内,各种等同的修改是可能的。根据上面详细的描述可对本发明实施这些修改。下面的权利要求书中所用的术语不应当被认为是将本发明限于说明书和权利要求书中公开的特定实施例。更确切地,本发明的范围将完全由下面的权利要求书来确定,将依照所制定的权利要求解释原则来解释下面的权利要求书。
权利要求
1.一种用于将调试信息传输至远程计算机的方法,包括 在第一计算机系统上执行程序代码;在所述程序代码的执行期间发生错误时,调用网络打印驱动器以生成调试信息; 使用所述网络打印驱动器生成调试信息;以及通过网络适配器将所述调试信息传输至远程计算机系统。
2.如权利要求1所述的方法,还包括在所述调试信息的生成期间停止所述程序代码的执行; 在所述调试信息的生成之后重新开始所述程序代码的执行。
3.如权利要求1所述的方法,还包括 从所述调试信息构建调试信息节点。
4.如权利要求3所述的方法,其中所述调试信息节点包括选自包括下列项的组的数据优先级、时间戳、主机ID、元数据、分隔符和调试信息。
5.如权利要求4所述的方法,其中所述元数据包括选自包括下列项的组的数据模块名、子模块名、优先级、文件名和行号。
6.如权利要求4所述的方法,其中所述分隔符包括选自包括下列项的组的数据项目名和序号。
7.如权利要求3所述的方法,其中所述第一计算机系统依照可扩展固件接口(EFI)框架规范进行操作。
8.如权利要求7所述的方法,还包括在未能将所述调试信息自所述第一计算机系统传输到所述远程计算机系统时将所述调试信息缓冲进所述第一计算机系统的非易失性存储器;以及重新尝试将存储在缓冲器中的所述调试信息传送至所述远程计算机系统。
9.一种用于将调试信息传输至远程计算机的方法,包括 在网络打印驱动器中接收来自计算机程序的调试信息;根据存储在配置模块中的配置参数过滤所述调试信息;利用来自所述配置模块的可配置参数从所过滤的调试信息构建调试信息节点;利用调度器通过网络适配器传输所述节点。
10.如权利要求9所述的方法,还包括在未能通过所述网络适配器传输所述节点时,将所述节点缓冲进存储装置。
11.如权利要求10所述的方法,其中所述可配置参数选自由下列项组成的组优先级、 时间戳、主机ID、元数据、分隔符、调试信息、模块名、子模块名、优先级、文件名、行号、项目名和序号。
12.—种记录调试信息的计算机系统,包括 处理器;可操作耦合至所述处理器的网络适配器;以及至少一个存储装置,在所述至少一个存储装置上存有计算机程序代码,在由所述处理器执行时所述计算机程序代码实施下列操作,包括 接收来自计算机程序的调试信息;根据存储在配置模块中的配置参数过滤所述调试信息;利用来自所述配置模块的可配置参数从所过滤的调试信息构建调试信息节点;利用调度器通过网络适配器传输所述节点。
13.如权利要求12所述的计算机系统,所述调试信息节点包括选自由下列项组成的组的数据优先级、时间戳、主机ID、元数据、分隔符、调试信息、模块名、子模块名、优先级、文件名、行号、项目名和序号。
14.如权利要求12所述的计算机系统,其中所述网络适配器是有线以太网卡。
15.如权利要求12所述的计算机系统,其中所述网络适配器是无线以太网卡。
16.如权利要求12所述的计算机系统,还包括用于设置所述配置参数的用户接口。
全文摘要
描述了一种用于远程记录调试信息的方法和系统。在执行过程中发生错误时计算机执行程序代码生成调试信息。接着利用网络适配器将该调试信息发送至远程计算机。在一个实施例中,执行程序的计算机是顺应可扩展固件接口(EFI)的。
文档编号G06F11/34GK102253882SQ20111015883
公开日2011年11月23日 申请日期2004年12月31日 优先权日2004年12月31日
发明者C·宋, R·简, Y·孙, Y·邓, Z·王 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1