嵌入式装置、程序产生装置和程序的制作方法

文档序号:6495866阅读:157来源:国知局
嵌入式装置、程序产生装置和程序的制作方法
【专利摘要】在程序的执行期间检测到故障时显示错误消息的嵌入式装置包括:中央处理单元,执行该程序;程序存储单元,存储可执行的压缩文件,在该可执行的压缩文件中多个文件被组合为该程序;故障检测单元,基于存储了指令的执行结果的地址的存储内容检测故障;以及错误消息显示单元,当所述故障检测单元检测到故障时在显示设备上输出错误消息,该错误消息包括该程序的版本信息、该文件的文件标识信息以及在该文件中正执行的指令的行号,该错误消息在该指令中描述。
【专利说明】嵌入式装置、程序产生装置和程序
【技术领域】
[0001]本发明涉及在程序的执行期间在检测到故障时显示错误消息的嵌入式装置。
【背景技术】
[0002]当包括计算机的装置执行程序时,在发生错误时,可以显示错误消息。这样的错误消息的显示对于不仅向用户报告错误的发生而且报告错误的原因可能是有用的。
[0003]图1例示传统的错误消息的例子。描述I指示向用户报告错误的发生的消息。描述2指示对错误的发生的通常的响应。描述3指示包括向用户报告错误的原因的重要性的消息。描述3如何显示依赖于软件。但是,通常,要显示的最大信息量可能受限制。由于此限制,使用编码的数据(代码)显示描述3以便用户可以通过参考手册等来识别与该代码对应的错误的原因。而且,用户可以向支持中心报告该代码以便支持中心可以向用户报告错误的原因。
[0004]但是,这样的分析错误原因的处理可能为用户增加麻烦。因此,已经已知代码和相应的错误内容被存储在执行程序的装置中的技术(例如参见专利文献I)。专利文献I公开了存储指示事件和相应的故障部分之间的关系的表格的诊断装置。通过在该装置中存储该表格,当用户希望指出错误原因时,可以减少查看分析手册或者呼叫支持中心的必要性(频率)。
[0005][专利文献I]日本公开专利申请第2006-201927号
【发明内容】

[0006]本发明要解决的问题
[0007]但是,在发生错误时要显示的代码可能粗略地指出错误的原因或者错误发生在哪里,但是可能不能准确地指出(精确定位)在源文件中的哪里发生错误。即,在相关技术中,在错误彼此类似但是错误的原因相互不同的情况下可能显示相同的代码。因此,代码单独不能提供唯一地指定实际发生了哪种错误的信息。这也可以适用于如专利文献I中所述在装置中存储表格的情况。即,当代码的信息量受限制时,可能难以准确地指出(精确定位)在哪里发生了错误。
[0008]例如,通过在开发程序时使用集成开发环境(IDE),由于IDE,可能变得能够显示在程序中发生错误的地点的行号。此外,在编译处理期间可以显示其中包括了文法错误的行号。但是,由于降低执行速度以及受限制的资源,可能难以直接将IDE嵌入到装置中。此夕卜,因为在编译程序之后行号可能不位于程序中,所以难以指出在发生错误时正在运行的程序的行号,该程序由该装置执行。这也可以适用于解释器(interpreter)语言。S卩,即使当在编译时通过IDE在源代码中定位了行号时,在执行程序时,解释程序语言通常在程序中也不包括行号。
[0009]此外,为了准确地指出(精确定位)错误发生的地点(部分),例如,可以考虑使用错误日志以便用户或支持中心可以分析错误的原因。错误日志可以包括例如错误发生状态和显示的错误消息。大多数程序生成错误日志。因此,至少通过使用错误日志,可能变得比使用错误消息更容易指出错误原因。
[0010]但是,错误日志对于用户进行分析来说可能太复杂。因此,在许多情况下,用户难以利用错误日志指出错误的原因。此外,不像通用计算机的情况,在嵌入式装置的情况下,基本上用户难以访问错误日志。
[0011]技术上可能能够使得装置将该错误日志发送到支持中心,以便支持中心可以分析错误日志。但是,许多用户可能不愿意发送可能包括详细信息的错误日志。此外,可能不总是希望向用户示出错误日志,因为错误日志可能允许用户详细分析装置。
[0012]考虑到以上问题做出本发明,并且本发明可以提供基于在错误发生时所显示的代码而指出错误发生在软件中的哪里的嵌入式装置。
[0013]解决问题的手段
[0014]根据本发明的一个方面,在程序执行期间在检测到故障时显示错误消息的嵌入式装置包括:中央处理单元,执行程序;程序存储单元,存储组合了多个文件的可执行的压缩文件,作为所述程序;故障检测单元,基于存储指令的执行结果的地址的存储内容检测故障;以及错误消息显示单元,当所述故障检测单元检测到故障时在显示设备上输出错误消息,该错误消息包括所述程序的版本信息、文件的文件标识信息以及所述文件中正被执行的指令的行号,该错误消息在该指令中描述。
[0015]技术效果
[0016]变得能够基于在发生错误时显示的代码提供并指出错误发生在软件中的哪里。
【专利附图】

【附图说明】
[0017]图1是示出相关技术的错误消息的例子的图;
[0018]图2是示出根据一个实施例的错误消息的例子的图;
[0019]图3是示出当在执行程序的装置中发生错误时分析错误的原因的示例流程的图;
[0020]图4是示出该装置的例子的图;
[0021]图5是示出图像处理装置或者多功能外设(MFP)的硬件配置的例子的图;
[0022]图6是示出通信终端的硬件配置的例子的图;
[0023]图7是示出程序产生装置的示意性透视图的图;
[0024]图8是程序产生装置和程序执行装置的示例框图;
[0025]图9是示出文件代码表的例子的图;
[0026]图10是示出程序的版本的例子的图;
[0027]图11是示出通过构建工具产生的版本管理表的例子的图;
[0028]图12是示出错误代码的例子的图;
[0029]图13是示出源文件的描述的例子的图;
[0030]图14是示出在被转换为错误代码之后的源文件的例子的图;
[0031]图15是示出程序产生装置产生错误代码的处理的流程图;
[0032]图16是示出当装置或通信终端执行程序时显示错误消息的处理的流程图;
[0033]图17是示出错误代码的例子(实施例2)的图;
[0034]图18是示出源文件的描述的例子(实施例2)的图;[0035]图19是示出其中第一变量与错误号相关联的错误号表的例子的图;
[0036]图20是示出在被转换为错误代码之后的源文件的例子的图;
[0037]图21是示出程序产生装置产生错误代码的产生处理的例子(实施例)的流程图;
[0038]图22是示出当程序执行装置执行程序时显示错误消息的例子(实施例2)的流程图;
[0039]图23是示出错误报告系统的配置的例子的图;以及
[0040]图24是示出程序执行装置和用于支持中心中的维护的终端的操作处理的流程图。
[0041]参考标记的描述
[0042]11:文件代码产生部分
[0043]12:编译部分
[0044]13:版本接受部分
[0045]14:代码转换部分
[0046]15:链接部分
[0047]16:压缩部分
[0048]17:程序DL部分
[0049]18:错误检测部分
[0050]19:错误消息显示部分
[0051]20:程序
[0052]31:错误号表
[0053]100:信息处理装置
[0054]200:MFP
[0055]300:通信终端
[0056]301:通信系统
[0057]400:服务器
[0058]500:程序产生装置
[0059]600:用于支持中心中的维护的终端
[0060]700:错误报告系统
【具体实施方式】
[0061]以下描述本发明的实施例。
[0062]实施例1
[0063]概况
[0064]首先,描述根据此实施例的要在程序执行装置上显示的错误消息。
[0065]图2例示根据此实施例的错误消息的例子。图2的错误消息包括以下三个描述以及OK按钮。
[0066]描述I 发生错误”
[0067]描述2:“呼叫支持中心”
[0068]描述3:“0511-OlC-O”[0069]根据此实施例的错误消息中的特征之一是源文件的行号被包括在描述3中。数据“01C”以十六进制表示源文件的行号。数据“05”表示程序的版本。数据“11”表示其中发生错误的文件的名称。以下,整个描述3可以被称为错误代码。
[0070]S卩,在大多数情况下,当发生错误时由计算机执行的指令中不包括行号,而是指示哪个行号对应于原文件中的指令的信息(数据)将被包括在描述3中。因此,用户通过向支持中心等报告描述3的内容,支持中心等可以准确地指出(精确定位)发生了错误的指令,这可以迅速地分析错误的原因。
[0071]在图2中,描述了错误代码被包括在错误消息中的情况。但是,例如,可以单独显示错误代码(即在显示错误消息之前或之后显示)。此外,程序的版本、文件名和行号也可以分开显示。
[0072]此外,在此处,术语“错误”指可以由程序检测到的故障(即可预期的故障)。要注意,术语“错误”不指代(不包括)诸如阻止错误消息的显示的非预期的故障(例如可能引起程序的中止的缺陷、以及可能使得难以执行程序的硬件故障)。
[0073]在发生错误时的示例测量
[0074]图3例示当在程序执行装置中发生错误时直到分析错误的原因的示例流程。
[0075]1.发生错误,并且程序执行装置显示错误消息。然后,用户知道发生错误。
[0076]2.用户基于错误消息指出错误原因。当错误恢复(被移除)时,用户可以继续使用该程序执行装置。
[0077]另一方面,当用户通过检查错误消息、手册等不能理解错误的原因时,用户可以向程序执行装置的提供者的支持中心报告故障信息(即错误消息、程序的版本、错误发生状态、错误日志等)。可以通过使用电话或电子邮件进行报告。用户可以在除了错误可能不能恢复的情况之外的任意情况下报告故障信息。这是因为许多程序执行装置可以通过重新启动而恢复。
[0078]3.支持中心基于报告的故障信息分析错误的原因。在支持中心不能单独帮助用户恢复程序执行装置也不能指出错误原因的情况下,该故障信息被进一步报告给该程序执行装置的提供者(制造商)的开发部门。
[0079]4.开发部门基于该故障信息分析错误原因并采取措施。
[0080]5.开发部门向支持中心报告分析结果。
[0081]6.支持中心将该分析结果以及在需要时将可能的措施报告给用户。
[0082]在此,在以上的分析(步骤)“4.”中,故障信息中包括的信息越多,开发部门分析错误原因变得越容易。但是,例如,可能不能总是获取包括所有所需的信息的故障信息。即,获取故障信息的难度可能依赖于情况而变化。
[0083]故障信息可以包括:
[0084](i)错误(故障)发生状态(例如,当发生错误时正在执行何操作、在发生错误之前执行了何操作、硬件配置等等);
[0085](ii)向用户显示的错误消息
[0086](iii)其中发生错误的程序的版本;以及
[0087](iv)错误日志。
[0088]例如,当用户仔细监视(观看)程序执行装置的操作状态时可以获得数据(i),但是如果用户不仔细监视操作状态,则获取的信息可能有限。获取的故障发生状态的信息越详细,则变得越是期望。但是,要获取的信息越详细,信息的获取变得越困难。
[0089]可以在除了例如程序执行装置中止(hang up)时之外的许多情况下显示数据(ii)(即错误消息)。因此,对于用户和支持中心来说可能容易获取错误消息。但是,如上所述,错误消息可能不包括用于用户或支持中心分析错误原因的足够信息。
[0090]通过获取数据(iii)(即程序的版本),开发部门可以相对容易地估计错误的原因。这是因为在具体版本中错误的原因可能是唯一的并且可能有较高的可能性已经报告了错误和版本之间的关系的报告。为了获取版本,用户可能需要进行具体操作,除非例如在开始程序时或者在程序开始以后自动显示版本。
[0091]此外,一旦获取了版本,就可以因而获取程序中所包括的各个文件的版本。因此,可以变得更容易分析具体于该程序版本的错误原因。
[0092]数据(iv)(即错误日志)可以包括所有数据⑴到(iv)。错误日志可以包括用于指出错误的详细情况以及发生错误的地点(部分)的信息,特别是包括发生错误的文件的名称以及程序的版本的、对于进行详细分析至关重要的信息。因此,最希望获取错误日志。但是,错误日志包含了最难获取的信息。如上所述,此原因是,用户不愿意向外部提供这样的信息。另外,装置的提供者也不愿意允许用户容易地(直接)访问错误日志。
[0093]在此实施例中,甚至开发部门难以获取错误日志,支持中心也可能能够基于错误消息中包括的错误代码获取等同于错误日志的信息。即,错误代码包括指示程序的版本的信息项、发生错误的文件的名称以及源文件的行号。因此,可能变得开发部门能够准确地指出(精确定位)发生了错误的地点(部分)(即在发生错误时正在执行哪个文件的哪部分)。
[0094]示例配置
[0095]程序执行装置
[0096]如下所述,为了显示源文件的行号,在要由程序执行装置执行的程序中已经包括了行号。因此,此实施例中的程序执行装置可以具有用于执行该程序的任何适当的配置,比如单独类型的客户端以及经由网络连接的终端或服务器。
[0097]图4的部分(a)示出了作为单独类型的程序执行装置的信息处理装置100的示意性透视图的例子。图4的部分(b)示出了多功能外设(MFP) 200的示意性透视图的例子。信息处理装置100以及MFP200两者包括中央处理单元(CPU)和程序,从而可以通过由CPU执行程序而进行特定于该程序的处理。当发生错误时,信息处理装置100或MFP200显示错误代码。
[0098]图4的部分(C)示出通信系统301的示意性配置图的例子。在通信系统301中,多个通信终端300 (下文中当希望相互区分它们时可以称为通信终端A、B)和服务器400 (经由网络)相互连接。通信终端A位于一个区域中(例如在美国),并且另一通信终端A位于另一区域中(例如在日本),并且通信终端A、B经由服务器400和网络彼此通信地连接。
[0099]通信终端A、B包括各自的相机、扬声器和麦克风,并且本地地连接到各自的显示设备。在通信终端A附近的用户的声音(语音)由通信终端A的麦克风收集并且被转换为电信号以发送到通信终端B。通信终端B的扬声器将该电信号转换为声音以便从扬声器输出该声音。这也适用于由相机捕捉的图像。即,通信终端A将通信终端A的相机捕捉的图像转换为电信号以发送到通信终端B。通信终端B将该电信号转换为图像以显示在通信终端B的显示设备上。这可以允许位于不同区域的用户使用声音和图像彼此通信。此外,作为显示设备,例如可以使用投影仪或者液晶显示器。作为通信系统301的具体例子,存在已知的电话会议系统。
[0100]在图4的程序执行装置中,MFP200和通信终端300可以称为S。此实施例中的错误消息在其中关于程序执行装置的操作的数量对于用户是有限的这种s中可以特别有效。通常,术语“嵌入式装置”可能未被很好地定义。但是,例如,认为嵌入式装置不包括通用信息处理装置(即个人计算机(PC))。
[0101]图5示出信息处理装置100或MFP200的硬件配置的例子。在此,MFP200的硬件配置限于与程序20的执行有关的部分。即,除了所示的部分中的功能之外,MFP200可以(通常)包括诸如扫描仪、绘图仪、传真机等其他功能。
[0102]信息处理装置100或MFP200包括CPU201、只读存储器(R0M)202、随机存取存储器(RAM)203、硬盘(HD)204、硬盘驱动器(HDD)205、介质驱动器207、显示器208、网络接口(I/F)209、键盘211、鼠标212、紧凑盘只读存储器(CD-ROM)驱动器214和总线210。CPU201控制整个装置的操作。R0M202存储初始程序加载器(IPL)和静态数据。RAM203被用作CPU201的工作区。HD204存储要由CPU201执行的程序20以及各种数据。HDD205在CPU201的控制下驱动HD204以向和从HD204写入和读取各种数据。介质驱动器207控制相对于于诸如闪存的记录介质206读取和写入(存储)数据。显示器208显示包括光标、菜单、窗口、字符、图像等各种信息。网络I/F209是用于使用通信网络2的数据传输的接口。键盘211包括用于输入字符、数字和各种指令的多个键。鼠标212用于选择和执行各种指令、选择要执行的处理、移动光标等。⑶-ROM驱动器214控制相对于作为可拆卸记录介质的例子的⑶-R0M213等读取和写入各种数据。总线210包括地址总线和数据总线以提供如图5中所示的配置元件之间的电连接。
[0103]在此,程序20可以是具有可安装格式或可执行格式的文件,并且可以通过将程序20存储到诸如记录介质206、⑶-R0M213等计算机可读记录介质来分发。此外,程序20可以是下述文件,该文件具有来自服务器(未示出)的可安装格式或可执行格式或者具有可由服务器安装的格式或者可由服务器执行的格式,以便被分发到信息处理装置100或MFP200的文件。
[0104]图6示出通信终端300的硬件配置的例子。如图6所示,本实施例中的通信终端300包括CPU101、R0M102、RAM103、闪存104、固态驱动器(SSD) 105、介质驱动器107、操作按钮108、电力开关109和网络I/Flll。CPUlOl控制整个通信终端300的操作。R0M102存储IPL和静态数据。RAM103被用作CPUlOl的工作区。闪存104存储包括程序20、图像数据、声音数据等的各种数据。SSD105在CPUlOl的控制下控制相对于闪存104写入和读取各种数据。介质驱动器107控制相对于诸如闪存的记录介质106写入和读取(存储)数据。操作按钮108用于例如选择终端100的目的地。电力开关109用于接通和断开终端100的电力。网络I/F111是用于经由通信网络2的数据传输的接口。此外,关于通信终端300可拆卸地提供记录介质106。
[0105]通信终端300还包括相机112、成像设备I/F113、麦克风114、扬声器115、声音输入/输出I/F1116、显示器I/F117、外部装置连接I/F118以及总线110。相机112在CPUlOl的控制下拍摄成像对象的图像以获取相应的图像数据,并且相机112被嵌入在终端300中。成像设备I/F113用于控制相机112的驱动。麦克风114输入声音,并且嵌入在通信终端300中。扬声器115输出声音,并且嵌入在通信终端300中。声音输入/输出I/F116在CPUlOl的控制下对在麦克风114和扬声器115之间的声音信号进行输入和输出处理。显不器I/F117在CPUlOl的控制下将图像数据发送到外部显示设备120。外部装置连接I/F118是用于与各种外部装置连接的接口。总线110包括地址总线和数据总线,以提供在如图6所示的配置元件之间的电连接。
[0106]假设图6中的显示设备120是显示成像对象的图像和用于操作的图标的包括液晶的液晶显示器(IXD)或有机EL显示器。但是,显示设备120可以是投影仪。显示设备120经由电缆120c连接到显示I/F117。
[0107]相机和扬声器可以不嵌入在通信终端300中,并且可以是经由通用串行总线(USB)电缆等外部地连接到外部装置连接I/F118的外部类型。
[0108]程序20不总是存储在闪存104中。这是因为在通信系统301中,适合于通信终端300的类型的程序20可以从服务器400下载。但是,在程序20正输出错误消息时,程序20可以存储在闪存104中。因此,程序20可以被当作通信终端300的一部分。
[0109]程序20可以是具有可安装或可执行格式的文件,并且可以使用存储了程序20的诸如记录介质106的计算机可读记录介质来分发。
[0110]程序产生装置
[0111]在此实施例中,要由程序执行装置(例如信息处理装置100、MFP200、通信终端300)执行的程序20包括源文件的行号。因此,存在产生这样的特殊程序20的装置(下文中将该装置称为程序产生装置)。该程序产生装置可以是在通用(多用途)操作系统(OS)(例如Windows (注册商标)、UNIX (注册商标)、Linux (注册商标))上运行的信息处理装置。因此,从功能的观点看,在程序产生装置和图5中的信息处理装置之间可能没有很大差别。但是,通常,这样的程序产生装置位于提供者处。在这点上,程序产生装置可以不同于执行程序20的程序执行装置。
[0112]图7的部分(a)示出程序产生装置500的示意性透视图的例子。图7的部分(b)示出程序产生装置500的硬件配置的例子。程序产生装置500包括CPU501、RAM502、R0M503、记录介质安装部分504、通信设备505、输入设备506、绘图控制部分507和HDD508。CPU501通过从HDD508读取和执行OS以及构建工具511提供各种功能,并进行产生校正的草稿图像数据的处理。
[0113]RAM502用作暂时存储CPU501执行构建工具511所需的数据的工作区(主存储器)。R0M503存储用于开始基本输入输出系统(BIOS)和OS的IPL、以及静态数据。
[0114]记录介质510附连到记录介质安装部分504以及从记录介质安装部分504拆卸。记录介质安装部分504读取存储在记录介质510中的数据并将该数据存储在HDD508中。此夕卜,记录介质安装部分504可以将存储在HDD508中的数据写到记录介质510中。记录介质510可以是例如USB存储器或SD卡。
[0115]输入设备506包括例如键盘、鼠标和轨迹球,并且接收来自用户的针对程序产生装置500的各种操作指令。HDD508可以是诸如固态驱动器(SSD)的非易失性存储器,并且存储OS以及诸如构建工具511的各种数据。
[0116]通信设备505是用于连接到诸如因特网的网络的网络接口卡(NIC),并且可以是以太网(注册商标)卡。
[0117]绘图控制部分507解释通过由CPU501执行构建工具511而已经写在图形存储器中的绘图命令,并且在显示器509上绘图,由此产生屏幕。
[0118]构建工具511是具有可安装格式或者可执行格式的文件,并且可以用存储该构建工具511的记录介质510或者通过服务器(未示出)来分发。
[0119]功能块
[0120]图8示出程序产生装置500和程序执行装置的功能框图的例子。程序产生装置500使用构建工具511构建源文件,并且产生程序20。构建工具511包括编译部分12、链接部分15、压缩部分16、文件代码产生部分11、版本接受部分13和代码转换部分14。在这些之中,代码转换部分14可以独立地提供或者包括在编译部分12中作为编译部分12的一部分。
[0121]编译部分12、链接部分15和压缩部分16是由构建工具511提供的已知的功能。即,编译部分12编译以C、C++、JAVA (注册商标,下文中省略)等写出的源文件,并且对于每个源文件产生对象模块文件。然后,链接部分15链接多个对象模块文件以产生对象文件。
[0122]压缩部分16将目录中的文件与指定的目录结构组合并压缩,以便压缩文件具有诸如jar”、“*.war”、“*.exe”等的文件扩展。压缩文件是程序20。程序执行装置可以解压缩并执行压缩的程序20,并且可以将该程序作为可执行文件直接执行。
[0123]构建工具511的可操作内容由构建文件22定义。构建文件22以可扩展标记语言(XML)中描述,并且定义了如何构建源文件以及产生工程(即在此实施例中的程序)的构建方法。
[0124]?描述BI定义“程序A”作为工程(project)名称。
[0125]?描述B2定义变量名称,并将目录名称“文件”、“主页”、“bin”和“js”存储为变量。在此,“文件”和“主页”已经存在。
[0126]?描述B3定义以产生目录“bin”和“js”。
[0127]?描述B4定义(指示)编译“文件”中的源文件,并将其复制到文件“bin”。
[0128]?描述B5定义(指示)将文件中的文件“calk, js”复制到目录“ js”。
[0129]?描述B6定义(指示)压缩在“主页”之下的目录和文件并产生压缩文件“programA.war,,。
[0130]当开发者(开发 工程师)指示开始构建时,构建工具511读取诸如构建文件22并开始构建。构建文件22可以由开发者描述,或者可以通过由构建工具511分析在开发的源文件的文件内容而自动产生。
[0131]文件代码产生部分11指定要构建的所有目标文件,将这些文件与唯一的文件代码(标识信息)相关联,并产生文件代码表21。在图8的构建文件22中,要构建的所有目标文件是要编译的文件目录中的文件以及复制源的文件calk, js。因此,可以给出不用于文件目录中的文件的文件代码。
[0132]图9示出文件代码表21的例子。在文件代码表21中,对于彼此而言唯一的文件代码与作为用于构成程序20的原始文件的所有文件相关联。文件代码产生部分11参考例如构建文件22,并提取在描述B4中要编译的文件中的所有源文件以及作为描述B5中的复制源的源文件。然后,对那些文件给出文件代码。[0133]文件代码表21可以由开发者产生。在此情况下,文件代码产生部分11可能不是必需的。
[0134]版本接受部分13接收来自开发者的程序20的版本的输入。程序的版本在以下描述。
[0135]此外,代码转换部分14将在文件中描述的具体功能转换为程序20的版本、文件代码和源文件的行号(在转换为十六进制之后)。即,产生错误代码。由于此转换,变得能够在发生错误时由程序20显示源文件的行号。
[0136]代码转换部分14是被包括在编译部分12中还是在编译部分12之外将对应于要构建的目标文件是否需要编译。因此,处理的内容可以一致。例如,在JavaScript(注册商标,下文中可以省略)中描述的文件将不被编译。因此,在编译部分12之外的代码转换部分14产生错误代码。另一方面,在C++或者JAVA中描述的文件将被编译。因此,编译部分12中的代码转换部分14产生错误代码。如果代码转换部分14在编译之前产生错误代码,则仅可以安装在编译部分12之外的代码转换部分14。
[0137]除了特定于程序20的各种功能之外,已经如上所述由构建工具511产生的程序20还包括错误检测部分18和错误消息显示部分19。错误检测部分18通过使用if语句等确定变量的内容来检测错误的发生。错误消息显示部分19检测错误的发生并且在显示器208、120上绘出错误消息。
[0138]此外,程序DL部分17主要安装在通信终端300上。例如,当通信终端300的电力接通时,IPL开始使 得CPUlOl执行程序DL部分17。程序DL部分17通过使用例如FTP命令指定已知服务器400的IP地址而连接到服务器400,并通过使用get命令指定程序20的文件名来从服务器400下载程序20。
[0139]此外,当通信终端300的电力关闭时,通信终端300删除闪存104中的程序20。这样做,变得能够防止从通信终端300偷窃程序20。
[0140]程序的版本
[0141]图10是例示程序20的版本的例子。经由称为构建的处理基于多个源文件产生具有一定规模(scale)的程序20。图10示出其中基于称为main, cpp的C++语言源文件、称为base, h的由main, cpp使用的头部文件、称为calk, js的JavaScript源文件(这也称为源文件是因为Javascript未被编译但是是构建的目标)等产生单个程序20的情况。
[0142]在此,术语“构建”指通过组合那些文件产生“可执行文件”。进行“构建”的是程序产生装置500,该程序产生装置500由开发者使用。通常,诸如“Make”和“ANT”的构建工具511是商业上可获得的。通过由程序产生装置500执行构建工具511,可以产生作为程序20的可执行文件(例如*? war、*? jar、*? exe文件)。
[0143]然后,通过组合那些多个文件的版本,管理程序20的版本。例如,当仅calk, js的版本改变时(即当仅更新calk, js并且任何其他文件未被改变时),通过calk, js的版本更新程序20的版本。图10示出如下情况:
[0144]Calk, js Verl:程序的版本是 0.1.0.0
[0145]Calk, js Ver2:程序的版本是 0.1.0.1
[0146]Calk, js VerX:程序的版本是 0.2.0.5
[0147]例如,程序20的版本在进行构建时由开发者设置。例如可以通过由开发者将程序20的版本与源文件的版本一起记录来管理程序20的版本。但是,经常使用专用的版本管理系统。作为版本管理系统,存在已知的例如作为免费软件的并行版本系统(CVS)、分支版本(SVN)和Git、以及VisualSourceSafe (注册商标)。在SVN的情况下,程序20的版本如下给出:
[0148]SI):开发者通过使用版本管理系统的推荐(输入)在储存库中登记目录结构,该目录结构包括以树形登记的源文件。该储存库是存储了资源(源文件等)的区域。在此时,版本管理系统给出修订版I作为该工程的初始版本。
[0149]S2):存在开发者编辑一个或多个源文件的情况。当开发者希望记录已经被编辑的源文件的组合时,开发者使用版本管理系统的命令(commit (提交))来将编辑结果存储到储存库中。版本管理系统将该工程的修订版提高为2,并将新版本添加到新的源文件。
[0150]S3):当通过对源文件进行构建而从该工程产生了程序20时,开发者使用版本管理系统的命令(copy (复制))而给出标签名。通过给出标签名,源文件在该时刻的版本或者具有不同的版本的源文件与该标签名相关联并且由版本管理系统存储。通常,标签名被给出为“标签=程序20的版本”。
[0151]通过给出标签名,一旦已知程序20的版本,版本管理系统就唯一地指明用于构建的源文件。
[0152]然后,通过开发者的操作,构建工具511以如下方式进行构建:因为给出了标签名,目录结构和源文件的内容不改变(即没有添加新的改变)。当进行构建时,开发者指定标签名为程序20的版本。
[0153]然后,当将要采用与程序20的版本对应的源文件时,开发者指定标签名以指明源文件。
[0154]此外,存在进行构建和版本管理两者的IDE。因此,可能不总是需要分开地提供构建工具511和版本管理系统。
[0155]图11示出由构建工具511产生的版本管理表的例子。构建工具511获取源文件的版本或时间戳,并将获取的版本或时间戳与程序20的版本相关联并存储。因此,当检测到程序20的版本时,通过参考版本管理表,可以指明在与该版本对应的程序中包括的文件的版本。版本管理表由开发部门管理。
[0156]此外,在图10的源文件中,类型(例如描述语言)可能不同。但是,构建工具511可以仅对具有相同类型的文件(例如仅以C++描述的文件)进行构建。在此情况下,构建工具511仅进行编译和链接。无论这样的部分处理被称为构建还是编译,这仅仅是名称。即,甚至当源文件具有单个类型时,程序执行装置也可以显示行号。
[0157]错误代码
[0158]图12示出错误代码的例子。在图12中,错误代码具有总共10位字符(数字)通过从最左边的位添加(计数)位编号来描述错误代码。错误代码的前两位表示程序20的版本的最后两位。例如,当程序20的版本是“0.2.0.5”时,数据是“05”。为何仅使用2位的原因是为了与需要报告更长的错误代码的情况相比减少向服务中心报告错误的数字的风险。此外,错误代码包括(连字符),使错误代码可以变得更可读并且连字符没有意义。
[0159]其可能取决于如何描述版本,但是当开发者以十进制逐一递增版本时,在使用最后两位时标识100个版本。因此,单独使用版本的最后两位对于分析错误代码可能是足够的(充分的容量)。
[0160]错误代码的第三和第四位中的两个字符表示输出错误消息的源文件的文件代码。如参考图9所述,文件代码是唯一地标识源文件的文件名的十六进制数字。利用十六进制的两位,可以标识255个文件。该文件代码对于大规模的程序20中的文件代码可能是不够的,但是对于具有一般规模的程序可以是足够的。当文件代码变得不够时,用于连字符的第五位也可以用于增加用于文件代码的位数。为何通过使用文件代码来表达和显示文件名不仅是为了尽可能降低长度而且还为了防止包括程序20的功能的信息被用户等基于文件名而知道。
[0161]第六到第八位的三个字符表示输出错误消息的源文件的十六进制的行号。当使用十六进制的三位时,表达多达4096行。当一个源文件的代码量更大时,此容量可能不够。但是,认为在许多情况下该容量可以是足够的。但是,如果4096行不够,则用于连字符的第九位也可以用于增加用于行号的位数。使用十六进制来表达行号的原因是为了降低错误代码的长度。
[0162]第十位的一个字符可以任意使用。例如,源文件的开发者可以使用此来描述对于当产生源文件时分析错误原因有效的信息。该任意一个字母的使用可以使得开发者分析错k原因更各易。
[0163]源文件的例子
[0164]图13示出源文件的描述的例子。图13的源文件包括逐一增加的整数的行号。在实际的源文件中,不包括行号。但是,在IDE和编辑器中,添加逐一增加的序号以支持开发者。
[0165]在图13中,称为“printEirorDialog”的函数用于显示错误消息(见行11、28和105)。当该函数由程序执行装置执行时,该程序执行装置显示具有如图2中的格式的错误消息(即包括描述1-3以及一个OK按钮)。
[0166]此函数取三个自变量!printErrorDialogCerrorTitlel,errorMessagel, createCode(_reason)。
[0167]第一自变量“errorTitlel”指定图1中的描述I,第二自变量“errorMessagel”指定描述2。在“errorTitlel”和“errorMessagel”中,在该行(未不出)中设置字符串。该字符串存储在RAM203、103、HD204和闪存104的预定地址中。当执行该函数时,程序执行装置从RAM203、103、HD204和闪存104读取在由“errorMessagel”指定的地址处的字符串以及在由“errorMessagel”指定的地址处的字符串。
[0168]函数“printErrorDialog”的第三自变量“createCode () ”对应于描述3,并且变为用错误代码的替换目标。createCodeO是产生错误代码并采用一个自变量的函数。当执行“printErrorDialog”时,由于字符串,createCodeO可能不使用。因此,不是函数而是变量可以用错误代码来代替。createCodeO函数在相关技术的错误消息中显示错误代码。因此,通过用错误代码与该函数交换,开发者可以改变源代码以便通过使用原始的源文件在此实施例中显示错误代码。
[0169]代码转换部分14将createCode O替换为程序20的版本、文件代码和行号,并且进一步用错误代码的任意一个字符替换createCode O的自变量。该任意一个字符在行11和28中被给出为createCodeO中的变量,并且在行105中被给出为字符常数“2”。如在行3中,描述了“_reason= “O””。因此,通过交换行28中的createCode O与行11中的createCode O ,该任意一个字符是“O”。另一方面,当替换行105中的createCode O时,任意一个字符是“2”。该任意一个字符意味着什么可以由源文件的开发者使用例如将该一个字符与内容(含义)相关联的表格来管理。
[0170]在图13中,在行11、28和105中分别描述了三个“printErrorDialog”函数。依赖于已经发生的错误的地点或状态(即依赖于最后的处理),开发者可以改变自变量。因此,描述I和2的内容也可以改变。自然,如在行11和28中,多个“printErrorDialog”函数可以具有相同的自变量。
[0171]如上所述,当仅提供了描述I和2并且在多个部分中使用相同的消息时,甚至开发者可能都不能容易地指出或者根本不能指出从哪里输出了错误消息。但是,通过如在此实施例中将错误代码嵌入在源代码中,甚至当描述I和2相同时,也变得能够唯一地确定从源代码的哪部分(哪行)输出了错误消息。
[0172]例如,如果行号28行包括在错误代码中,则开发者可以明确由于在源文件的行28中的“printErrorDialog”函数而显示了输出的错误消息。因此,开发者可以明确存在可能引起错误的处理,该处理在源文件的行28附近。在图3的例子中,可能引起错误的处理位于错误代码中所包括的行号之前几行。
[0173]就在“printErrorDialog”函数之前,描述了使用例如if语句确定错误的发生的处理。作为确定错误的发生的处理,开发者通常描述最佳的确定条件以便基于被认为在就在确定错误的发生的该处理之前的处理中已经发生的错误来检测错误是否发生。例如,当在变量“operation”中设置称为“failure”的值时,显示行11中的错误消息。当在变量“errorOccured”中设置了除了 “O”之外的值时,显示行28中的错误消息。当在变量“getValue”中设置了值“null”(没有)时显示行105中的错误消息。因此,变得能够可靠地检测特定于处理的错误。变量“operation”、变量“errorOccured”和变量“getValue”实际存储在RAM203、103、HDD204和闪存104中的预定地址处。当程序执行装置基于变量名访问该地址时,可以确定错误的发生。
[0174]在此,使用if语句确定错误的发生仅仅是一个例子。例如,可以使用Switch语句确定错误的发生。
[0175]图14示出包括被替换的错误代码的源文件的例子。
[0176]如当与图13比较时显而易见的,用0511-00B-0替换了行11中的CreateCode (_Reason);用 0511-01C-0 替换了行 28 中的 CreateCode (_Reason);用 0511-0690-2 替换了行 105 中的 CreateCode ( “2”)。
[0177]操作过程
[0178]图15是示出由程序产生装置500产生错误代码的处理的流程图的例子。在此,在该处理中,描述了其中代码转换部分14在编译部分12以外提供的情况。但是,如果代码转换部分14在编译部分12以外提供,执行定时可能不同,但是处理的内容相同。
[0179]在对文件进行构建时,开发者可以将构建之后的程序20的版本设置到程序产生装置500 (步骤SlO)。程序产生装置500的版本接受部分13接受版本的输入。
[0180]接下来,文件代码产生部分11产生文件代码表21 (步骤S20)。可以从构建文件22指出要对其进行构建的源文件。在上图的例子中,在文件目录下的文件对应于要对其进行构建的源文件。
[0181]接下来,代码转换部分14顺序地读取已经作为目标的源文件以产生文件代码表21 (步骤S30)。这样做,可以指出当前关注的源文件的文件代码。
[0182]在读取了新的源文件之后,代码转换部分14从第一行顺序地读取指令(步骤S40)。甚至当在两行或多行中描述一个指令时,也逐行地读取该指令。即,可以读取指令而不受指令的格式或语法的影响。此外,一行或两行中的差别可能不会变为指出错误原因的重要故障。因此,可以统一地读取在两行或多行中描述的整个单个指令。
[0183]接下来,代码转换部分14确定createCodeO函数是否被包括在读取的行中(步骤S50)。createCode O函数的自变量可以具有任意值或者可以没有。
[0184]当确定不包括createCode O函数时(在步骤S50中的否),处理回到步骤S40。
[0185]当确定包括createCode O函数时(在步骤S50中的是),代码转换部分14产生错误代码(S60)。在产生错误代码时,使用程序20的版本、文件代码和行号。可以替换或者可以不替换上述的任意一个字符。代码转换部分14获取由开发者在程序产生装置500中输入的程序20的版本,并提取最后两位。接下来,代码转换部分14从文件代码表21读取文件代码,该文件代码对应于当前关注的文件的文件名。接下来,当前读取的行被用于作为相同的行号,并且被转换为十六进制。此外,如果存在createCode O函数的自变量,则指定该任意字符。此外,发生了错误的处理的行通常是在当前读取的行之前的几行。因此,可以确定通过从当前读取的行减去几行而获得的值作为行号,并且被转换为十六进制。然后,通过在各个预定位置处布置字符串和连字符而产生错误代码。
[0186]代码转换部分14用产生的错误代码替换createCodeO函数(步骤S70)。
[0187]然后,代码转换部分14确定处理是否进行到一个源文件的最后一行(步骤S80)。当确定处理没有进行到最后一行时(步骤S80中的否),该处理回到步骤S40。当确定处理进行到最后一行时(步骤S80中的是),处理来到步骤S90。
[0188]当处理进行到最后一行时,代码转换部分14 (从文件代码表21中的所有源文件中)确定是否存在要对其进行构建以及还没有对其进行处理的任何文件(步骤S90)。
[0189]当确定存在要对其进行构建并且还没有对其进行处理的这样的文件时(步骤S90中的是),处理回到步骤S30以重复从步骤S30起的处理。当确定没有要对其进行构建并且还没有对其进行处理的文件时(步骤S90中的否),构建部分组合并压缩这些文件(步骤是100)。更具体地,编译部分12编译要被编译的源文件,并且链接部分15进行链接并存储在特定目录中。此外,构建工具511将要被复制的源文件仅复制到特定目录。最后,压缩部分16组合并压缩在由构建文件指定的目录下的多个文件。这样做,产生作为执行文件的程序20。
[0190]产生的程序20经由记录介质或网络被安装到程序执行装置中。在电力接通时从服务器400将程序20下载到通信终端300。
[0191]图16示出例示了当程序执行装置执行程序20时显示错误消息的处理的流程图的例子。
[0192]程序执行装置按照地址的顺序执行程序20而不调用任何分支或子例程(步骤S110)。
[0193]然后,确定是否在例如if语句中检测到错误(步骤S120)。当错误检测部分18确定检测到错误时(步骤S120中的是),错误消息显示部分19产生错误消息(步骤S130)。具体地,从 RAM203、103、HDD204 和闪存 104 读取与 errorTitlel (即 PrintErrorDialog 函数的第一自变量)相关联并且一起存储的字符串。此外,从RAM203、103、HDD204和闪存104读取例如是“0511-00B-0”的三个自变量。当开发者产生源文件时,描述1-3所位于的位置被指定为PrintErrorDialog函数的属性。
[0194]错误消息显示部分19在显示器208、120等上显示错误消息(步骤S140)。这样做,如图2所示,其中发生错误的行号显示在错误代码中,以便用户可以向支持中心报告错误代码。当用户按下OK按钮时,程序执行装置从PrintErrorDialog函数中的下一指令恢复处理。
[0195]支持中心或开发部门参考版本管理表,并且指出与错误代码中包括的程序20的版本对应的文件的版本。接下来,支持中心或开发部门参考文件代码表21,并且指出与错误代码中包括的文件代码对应的文件名。这样做,可以指出其中发生错误的源文件以及该源文件的版本。支持中心或开发部门基于错误代码中包括的行号指出在源文件中的哪里发生错误。因此,可以指出(精确定位)发生错误的指令。
[0196]实施例2
[0197]在此实施例中,描述了显示与实施例1中的不同的错误代码的程序执行装置和程序产生装置。
[0198]错误代码
[0199]图17示出此实施例中的错误代码的例子。图17中的错误代码具有总共十二位。从左边给出对于这些位的位编号并对其描述。在此实施例中,特征是使用错误代码的1-4位中的四个字符给出错误号。
[0200]在此,错误号指唯一地(或统一地)标识错误内容的标识信息。在实施例1中的错误代码中,假设开发者参考源代码来分析错误代码,并且用户向支持中心报告消息和错误代码。因此,如果消息或错误代码长,或者如果存在类似其他的一些消息和错误代码,则可能不能正确地报告消息或错误代码。
[0201]错误代码的较高的四位用于解决此问题。此外,可以通过由程序执行装置的制造商准备和分发包括与错误代码对应的错误内容以及解决措施的手册或者提供显示与错误代码对应的错误内容以及解决措施的网页而使用错误代码的较高的四位。此外,可能变得能够增加用户可以基于错误代码的较高的四位通过参考手册等解决程序的错误的原因而不用联系支持中心的可能性。
[0202]错误代码中的第五位的连字符是用于区分错误号与其他部分的符号。为此,不总是需要该连字符,并且例如可以使用符号“_或空格“”。此外,也可以不用连字符等而描述错误代码。
[0203]第六和第七位的两个字符与图12的错误代码中的第一和第二位的字符相同(即程序20中的最后两位),并且第八和第九位的字符与图12的错误代码中的第三和第四位的字符相同(即输出错误消息的源文件的文件代码)。
[0204]在图17的错误代码中省略了图12的错误代码的第五位中的连字符。这是因为,在图17的错误代码中,通过仅使用在第五位处的一个连字符,错误号可以更清楚地与其他部分分离。类似于实施例1,除了错误代码之外的代码(6-12位)由开发部门使用。此外,通过省略连字符,变得能够防止错误代码的长度太长。
[0205]10-12位中的三个字符与图12的错误代码中的6_8位中的错误代码相同(即源文件的行号)。
[0206]此外,没有与图12的错误代码中的9-10位的字符对应的字符。其原因是为了防止错误代码太长。但是,可以在图17的错误代码的13-14位中添加图12的错误代码中的
9-10位的字符而不进行省略。
[0207]此外,在较高的1-4位中描述错误号。但是,错误代码的位置不限于较高的1-4位。描述程序20的版本以及源文件的行号的位置不限于图17中所述的位置。错误代码的位数不限于四。对于错误号可以使用少于或多于4位。
[0208]源文件的例子
[0209]图18示出源文件的描述的例子。关于图13和图18之间共同的部分,仅描述主要部分。类似于实施例1,“printErrorDialog”函数是显示错误消息的函数。但是,printErrorDialog函数取两个自变量。
[0210]第一自变量errorl (或error2)与错误号表中的错误号相关联。此外,由于第一自变量和错误号之间的关联性,在实施例1中分别与第一和第二自变量相关联的描述I和2被登记在错误号表中以便与第一自变量相关联。因此,实施例1中的第二自变量可以省略。[0211]第三自变量createCode O将被错误代码替换。此外,在此实施例中,错误代码不包括任意的一个字符。因此,不使用createCodeO的自变量。
[0212]图19示出其中第一自变量与错误号以及描述I和2相关联的错误号表31的例子。错误号表31被存储在例如程序产生装置500的HDD508中以及程序执行装置的HD204、SSD105等中。错误号表31包括字段“errorName (错误名称)”、“errorNumber (错误号)”、^errorTitle (错误标题)”和“errorMessage (错误消息)”如下:
[0213]“errorName”登记将作为“printErrorDialog”函数的第一自变量的值;
[0214]“errorNumber”登记错误代码中的错误号;
[0215]“errorTitle”登记错误名称(错误的简要内容);以及
[0216]“errorMessage”登记错误消息(错误的具体内容)。
[0217]如上所述,源文件的printErrorDialog函数的第一自变量被登记为“errorName”。此外,在描述 I 和 2 中,分别显不 “errorTitle” 和 “errorMessage”。
[0218]代码转换部分14基于第一自变量参考错误号表31,并读取错误号以及描述I和2。此外,代码转换部分14用错误号以及程序20的版本、文件代码和行号替换createCode ()。这样做,可以用错误代码替换createCodeO。
[0219]图20示出包括替换错误代码的源文件的例子。
[0220]如在与图18比较时显而易见的,用“0001-051100B”替换行11中的CreateCode O ;用“0001_051101(:” 替换行 28 中的 CreateCode O ;用“0002_0511069” 替换行 105 中的 CreateCode ()。
[0221]如上所述,用错误号替换错误代码的第一到第四位。
[0222]操作过程
[0223]图21示出例示程序产生装置500产生错误代码的处理的流程图的例子。图21中的过程与图15中的过程的不同在于添加了步骤S55。[0224]g卩,当确定CreateCodeO函数被包括在从源文件读出的行中时(步骤S50中的是),代码转换部分14参考错误号表31,并指出错误号(步骤S55)。即,代码转换部分14读取具有CreateCode O函数作为第二自变量的printErrorDialog的第一自变量(图18中的errorl 或 error2)。
[0225]然后,读取其中第一自变量被登记在错误号表31中的“errorName”中的记录中的“errorNumber”。这变为错误号。此外,类似于图15中的过程,代码转换部分14指出程序20的版本、文件代码和行号。这样做,可以产生图17的错误代码。
[0226]代码转换部分14用产生的错误代码替换CreateCode O (步骤S70)。在步骤S70之后,处理以与实施例1中相同的方式进行。
[0227]图22示出例示当程序执行装置执行程序20时显示错误消息的处理的流程图的例子。
[0228]程序执行装置按照地址的顺序执行程序20而没有对分支或子例程的任何调用(步骤 SI 10)。
[0229]然后,确定是否检测到在例如if语句中的错误(步骤S120)。当错误检测部分18确定检测到错误时(步骤S120中的是),错误消息显示部分19读取在其中printErrorDialog函数的第一自变量被登记在“errorName”中的记录中的“errorTitle”和“errorMessage”(步骤 S125)。
[0230]接下来,错误消息显示部分19产生错误消息(步骤S130 )。具体地,从RAM203、103、HD204和闪存104读取作为第二自变量的诸如“0001-051100B”的字符串。这对应于描述3。此外,通过分别设置“errorTitle'“errorMessage”和该字符串作为描述1、2和3,产生错误消息。当开发者产生源文件时,描述1、2和3的位置被指定为printErrorDialog函数的属性。
[0231]错误消息显示部分19在显示器208、120等上显示错误消息(步骤S140)。这样做,包括错误号的错误代码被显示为错误消息的一部分。
[0232]因此,用户可以向支持中心报告错误代码。而且,用户可以基于错误号通过参考手册或者网页来查看错误内容以及解决措施。当用户按下OK按钮时,程序执行装置从printErrorDialog函数的下一指令恢复处理。
[0233]如上所述,根据此实施例中的程序执行装置和程序产生装置,除了实施例1中的效果之外,用户可能变得能够查看错误内容和解决措施。
[0234]实施例3
[0235]在此实施例中,描述了向支持中心报告错误消息的程序执行装置。
[0236]图23示出错误报告系统700的配置的例子。多个程序执行装置经由网络与用于支持中心中的维护的终端600通信地连接。用于支持中心中的维护的终端600的硬件配置的描述类似于信息处理装置100的硬件配置的描述。因此,省略重复的描述。
[0237]在程序执行装置中,预先登记用于支持中心中的维护的终端600的IP地址。代替IP地址,可以使用统一资源定位符(URL)来指定用于支持中心中的维护的终端600。此外,在程序执行装置中,还预先登记标识信息。标识信息唯一地指定程序执行装置,并且包括数字、字母或符号或其任意组合。
[0238]在报告错误消息时,程序执行装置向支持中心发送标识信息。[0239]用于支持中心中的维护的终端600包括与该标识信息对应的用户信息。该用户信息可以包括公司名称、部门名称、地址和联系人信息。支持中心基于该标识信息确定该程序执行装置的用户,并且可以提供售后服务等。
[0240]此外,可能存在一些不愿意基于标识信息提供用户信息的用户。因此,用户可以设置程序执行装置,使得阻止标识信息从程序执行装置的自动发送。否则,可以允许标识信息的自动发送,但是用户可以要求支持中心阻止用户信息的登记。
[0241]此外,用于支持中心中的维护的终端600存储错误号表31和错误详细信息。错误号表31类似于实施例2中的错误号表。错误详细信息可以是比错误号表31中的“errorTitle” 和 “errorMessage” 更具体的信息。
[0242]因为用于支持中心中的维护的终端600存储错误号表31,所以用于支持中心中的维护的终端600可以基于从程序执行装置接收的错误号在终端600的显示器上显示错误消息。此外,用于维护的终端600可以基于从程序执行装置接收的错误号在终端600的显示器上显示错误详细信息。此外,用于维护的终端600可以显示程序执行装置的标识信息或者程序执行装置的用户信息。
[0243]因此,尽管程序执行装置的用户不向支持中心报告错误代码,但是支持中心不仅可以指明错误消息而且可以指明发生错误的程序执行装置(或用户)。此外,支持中心可以指明(精确定位)发生错误的程序的指令。
[0244]图24示出例示程序执行装置以及用于支持中心中的维护的终端600的操作处理的流程图的例子。
[0245]在程序执行装置执行程序时,发生错误(步骤S210)。如在实施例2中所述,程序执行装置产生错误消息。此实施例中的程序执行装置将整个错误消息或者至少该错误消息的错误代码以及标识信息发送到用于支持中心中的维护的终端600 (步骤S220)。
[0246]用于支持中心中的维护的终端600接收标识信息和错误代码(步骤S230)。
[0247]用于支持中心中的维护的终端600从错误代码中提取第一到第四位的错误号(步骤 S240)。
[0248]用于支持中心中的维护的终端600基于该错误号参考错误号表31,并且产生错误消息,或者基于该错误号读取错误详细信息(步骤S250)。
[0249]用于支持中心中的维护的终端600在显示器上显示标识信息、错误消息和错误详细信息(步骤S260)。
[0250]如上所述,在此实施例中的错误报告系统700中,程序执行装置发送标识信息和错误代码,并且用于支持中心中的维护的终端600显示该标识信息。这样做,变得能够指出发生了错误的程序执行装置。此外,显示错误消息。因此,变得能够指出(精确定位)发生了错误的程序的指令。此外,显示错误详细信息。因此,支持中心可以指明错误内容并知道解决措施。
[0251]尽管为了完整和清楚的描述已经关于具体实施例描述了本发明,但是所附权利要求并不因此受限而是将被解释为包含了完全落在在此所述的基本教导内的对于本领域技术人员可能发生的所有修改和替换构成。
[0252]本申请基于2011年7月15日提交的日本专利申请第2011-157183号以及2012年5月15日提交的日本专利申请第2012-111680号并且要求它们的优先权,它们的全部内容通过引用合并于此。
【权利要求】
1.一种在程序的执行期间检测到故障时显示错误消息的嵌入式装置,该嵌入式装置包括: 中央处理单元,配置为执行所述程序; 程序存储单元,配置为存储组合了多个文件的可执行的压缩文件,作为所述程序;故障检测单元,配置为基于存储指令的执行结果的地址的存储内容检测故障;以及错误消息显示单元,配置为当所述故障检测单元检测到故障时在显示设备上输出错误消息,该错误消息包括所述程序的版本信息、文件的文件标识信息以及所述文件中正被执行的指令的行号,该错误消息在该指令中描述。
2.根据权利要求1的嵌入式装置, 其中所述错误消息还包括用于标识错误内容的错误号。
3.根据权利要求1或2的嵌入式装置, 其中所述错误消息显示单元配置为从所述嵌入式装置中包括的存储器中的预定地址读取在所述程序中描述的版本信息、所述文件标识信息以及所述行号。
4.根据权利要求3的嵌入式装置, 其中所述错误消息显示单元配置为从所述嵌入式装置中包括的存储器的预定地址读取第一字符串和第二字符串,第一字符串对应于所述程序中描述的指令的第一自变量,第二字符串对应于所述程序中描述的指令的第二自变量。
5.根据权利要求4的嵌入式装置, 其中第一字符串指示发生故障,第二字符串指示解决手段。
6.根据权利要求3的嵌入式装置,还包括: 错误表,其中第一字符串和第二字符串与所述程序中描述的指令的第一自变量相关联并且一起存储, 其中所述错误消息显示单元配置为读取所述错误表中的与所述指令的第一自变量对应的第一字符串和第二字符串,并将所述第一字符串和所述第二字符串布置在所述错误消息中的预定位置处。
7.根据权利要求6的嵌入式装置, 其中所述第一字符串指示错误名称,并且所述第二字符串指示错误内容。
8.根据权利要求1到7的任意一项的嵌入式装置,还包括: 程序下载单元,配置为经由网络从连接的服务器下载所述程序。
9.根据权利要求2的嵌入式装置,还包括: 发送单元,配置为向经由网络连接的信息处理装置发送错误消息和标识信息,该错误消息至少包括错误号,该标识信息标识该嵌入式装置。
10.一种产生组合了多个文件的可执行的压缩文件的程序产生装置,该程序产生装置包括: 文件存储单元,配置为存储指定所述多个文件的文件指定信息以及要组合的文件; 版本信息接受单元,配置为接受所述程序的版本信息的输入; 标识表产生单元,配置为通过向文件指定信息中指定的多个文件添加文件标识信息而产生文件标识表;以及 符号替换单元,配置为将所述文件中描述的预定符号替换为所述版本信息接受单元接受的版本信息、登记在所述文件标识表中的文件的文件标识信息、以及其中描述了所述预定符号的行或者附近的行的行号。
11.一种使得嵌入式装置执行以下步骤的程序,该嵌入式装置包括执行该程序的中央处理单元以及存储组合了多个文件的可执行的压缩文件作为所述程序的程序存储单元,并且当在程序的执行期间检测到故障时显示错误消息: 故障检测步骤,基于存储指令的执行结果的地址的存储内容检测故障;以及 错误消息显示步骤,当所述故障检测步骤检测到故障时在显示设备上输出错误消息,该错误消息包括所述程序的版本信息、所述文件的文件标识信息以及所述文件中正被执行的指令的行号,该错误消息在该指令中描述。
12.一种使得程序产生装置执行以下步骤的程序,该程序产生装置包括存储指定多个文件的文件指定信息以及要组合的文件的文件存储单元,并通过组合所述多个文件产生压缩文件: 版本信息接受步骤,接受程序的版本信息的输入; 标识表产生步骤,通过向文件指定信息指定的多个文件添加文件标识信息而产生文件标识表;以及 符号替换步骤,将所述文件中描述的预定符号替换为在所述版本信息接受步骤中接受的版本信息、登记在所述文件标识表中的文件的文件标识信息、以及其中描述了所述预定符号的行或者附近的行的行号。
13.由根据权利要求10的程序产生装置产生的程序, 其中所述程序的版本信息、 标识所述文件的文件标识信息以及所述文件中正被执行的指令的行号在组合了多个文件的压缩文件中描述。
【文档编号】G06F11/32GK103649924SQ201280034319
【公开日】2014年3月19日 申请日期:2012年7月4日 优先权日:2011年7月15日
【发明者】大和田俊和 申请人:株式会社理光
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1