嵌入式裝置、程序產(chǎn)生裝置和程序的制作方法
【專利摘要】在程序的執(zhí)行期間檢測(cè)到故障時(shí)顯示錯(cuò)誤消息的嵌入式裝置包括:中央處理單元,執(zhí)行該程序;程序存儲(chǔ)單元,存儲(chǔ)可執(zhí)行的壓縮文件,在該可執(zhí)行的壓縮文件中多個(gè)文件被組合為該程序;故障檢測(cè)單元,基于存儲(chǔ)了指令的執(zhí)行結(jié)果的地址的存儲(chǔ)內(nèi)容檢測(cè)故障;以及錯(cuò)誤消息顯示單元,當(dāng)所述故障檢測(cè)單元檢測(cè)到故障時(shí)在顯示設(shè)備上輸出錯(cuò)誤消息,該錯(cuò)誤消息包括該程序的版本信息、該文件的文件標(biāo)識(shí)信息以及在該文件中正執(zhí)行的指令的行號(hào),該錯(cuò)誤消息在該指令中描述。
【專利說明】嵌入式裝置、程序產(chǎn)生裝置和程序
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及在程序的執(zhí)行期間在檢測(cè)到故障時(shí)顯示錯(cuò)誤消息的嵌入式裝置。
【背景技術(shù)】
[0002]當(dāng)包括計(jì)算機(jī)的裝置執(zhí)行程序時(shí),在發(fā)生錯(cuò)誤時(shí),可以顯示錯(cuò)誤消息。這樣的錯(cuò)誤消息的顯示對(duì)于不僅向用戶報(bào)告錯(cuò)誤的發(fā)生而且報(bào)告錯(cuò)誤的原因可能是有用的。
[0003]圖1例示傳統(tǒng)的錯(cuò)誤消息的例子。描述I指示向用戶報(bào)告錯(cuò)誤的發(fā)生的消息。描述2指示對(duì)錯(cuò)誤的發(fā)生的通常的響應(yīng)。描述3指示包括向用戶報(bào)告錯(cuò)誤的原因的重要性的消息。描述3如何顯示依賴于軟件。但是,通常,要顯示的最大信息量可能受限制。由于此限制,使用編碼的數(shù)據(jù)(代碼)顯示描述3以便用戶可以通過參考手冊(cè)等來識(shí)別與該代碼對(duì)應(yīng)的錯(cuò)誤的原因。而且,用戶可以向支持中心報(bào)告該代碼以便支持中心可以向用戶報(bào)告錯(cuò)誤的原因。
[0004]但是,這樣的分析錯(cuò)誤原因的處理可能為用戶增加麻煩。因此,已經(jīng)已知代碼和相應(yīng)的錯(cuò)誤內(nèi)容被存儲(chǔ)在執(zhí)行程序的裝置中的技術(shù)(例如參見專利文獻(xiàn)I)。專利文獻(xiàn)I公開了存儲(chǔ)指示事件和相應(yīng)的故障部分之間的關(guān)系的表格的診斷裝置。通過在該裝置中存儲(chǔ)該表格,當(dāng)用戶希望指出錯(cuò)誤原因時(shí),可以減少查看分析手冊(cè)或者呼叫支持中心的必要性(頻率)。
[0005][專利文獻(xiàn)I]日本公開專利申請(qǐng)第2006-201927號(hào)
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的問題
[0007]但是,在發(fā)生錯(cuò)誤時(shí)要顯示的代碼可能粗略地指出錯(cuò)誤的原因或者錯(cuò)誤發(fā)生在哪里,但是可能不能準(zhǔn)確地指出(精確定位)在源文件中的哪里發(fā)生錯(cuò)誤。即,在相關(guān)技術(shù)中,在錯(cuò)誤彼此類似但是錯(cuò)誤的原因相互不同的情況下可能顯示相同的代碼。因此,代碼單獨(dú)不能提供唯一地指定實(shí)際發(fā)生了哪種錯(cuò)誤的信息。這也可以適用于如專利文獻(xiàn)I中所述在裝置中存儲(chǔ)表格的情況。即,當(dāng)代碼的信息量受限制時(shí),可能難以準(zhǔn)確地指出(精確定位)在哪里發(fā)生了錯(cuò)誤。
[0008]例如,通過在開發(fā)程序時(shí)使用集成開發(fā)環(huán)境(IDE),由于IDE,可能變得能夠顯示在程序中發(fā)生錯(cuò)誤的地點(diǎn)的行號(hào)。此外,在編譯處理期間可以顯示其中包括了文法錯(cuò)誤的行號(hào)。但是,由于降低執(zhí)行速度以及受限制的資源,可能難以直接將IDE嵌入到裝置中。此夕卜,因?yàn)樵诰幾g程序之后行號(hào)可能不位于程序中,所以難以指出在發(fā)生錯(cuò)誤時(shí)正在運(yùn)行的程序的行號(hào),該程序由該裝置執(zhí)行。這也可以適用于解釋器(interpreter)語(yǔ)言。S卩,即使當(dāng)在編譯時(shí)通過IDE在源代碼中定位了行號(hào)時(shí),在執(zhí)行程序時(shí),解釋程序語(yǔ)言通常在程序中也不包括行號(hào)。
[0009]此外,為了準(zhǔn)確地指出(精確定位)錯(cuò)誤發(fā)生的地點(diǎn)(部分),例如,可以考慮使用錯(cuò)誤日志以便用戶或支持中心可以分析錯(cuò)誤的原因。錯(cuò)誤日志可以包括例如錯(cuò)誤發(fā)生狀態(tài)和顯示的錯(cuò)誤消息。大多數(shù)程序生成錯(cuò)誤日志。因此,至少通過使用錯(cuò)誤日志,可能變得比使用錯(cuò)誤消息更容易指出錯(cuò)誤原因。
[0010]但是,錯(cuò)誤日志對(duì)于用戶進(jìn)行分析來說可能太復(fù)雜。因此,在許多情況下,用戶難以利用錯(cuò)誤日志指出錯(cuò)誤的原因。此外,不像通用計(jì)算機(jī)的情況,在嵌入式裝置的情況下,基本上用戶難以訪問錯(cuò)誤日志。
[0011]技術(shù)上可能能夠使得裝置將該錯(cuò)誤日志發(fā)送到支持中心,以便支持中心可以分析錯(cuò)誤日志。但是,許多用戶可能不愿意發(fā)送可能包括詳細(xì)信息的錯(cuò)誤日志。此外,可能不總是希望向用戶示出錯(cuò)誤日志,因?yàn)殄e(cuò)誤日志可能允許用戶詳細(xì)分析裝置。
[0012]考慮到以上問題做出本發(fā)明,并且本發(fā)明可以提供基于在錯(cuò)誤發(fā)生時(shí)所顯示的代碼而指出錯(cuò)誤發(fā)生在軟件中的哪里的嵌入式裝置。
[0013]解決問題的手段
[0014]根據(jù)本發(fā)明的一個(gè)方面,在程序執(zhí)行期間在檢測(cè)到故障時(shí)顯示錯(cuò)誤消息的嵌入式裝置包括:中央處理單元,執(zhí)行程序;程序存儲(chǔ)單元,存儲(chǔ)組合了多個(gè)文件的可執(zhí)行的壓縮文件,作為所述程序;故障檢測(cè)單元,基于存儲(chǔ)指令的執(zhí)行結(jié)果的地址的存儲(chǔ)內(nèi)容檢測(cè)故障;以及錯(cuò)誤消息顯示單元,當(dāng)所述故障檢測(cè)單元檢測(cè)到故障時(shí)在顯示設(shè)備上輸出錯(cuò)誤消息,該錯(cuò)誤消息包括所述程序的版本信息、文件的文件標(biāo)識(shí)信息以及所述文件中正被執(zhí)行的指令的行號(hào),該錯(cuò)誤消息在該指令中描述。
[0015]技術(shù)效果
[0016]變得能夠基于在發(fā)生錯(cuò)誤時(shí)顯示的代碼提供并指出錯(cuò)誤發(fā)生在軟件中的哪里。
【專利附圖】
【附圖說明】
[0017]圖1是示出相關(guān)技術(shù)的錯(cuò)誤消息的例子的圖;
[0018]圖2是示出根據(jù)一個(gè)實(shí)施例的錯(cuò)誤消息的例子的圖;
[0019]圖3是示出當(dāng)在執(zhí)行程序的裝置中發(fā)生錯(cuò)誤時(shí)分析錯(cuò)誤的原因的示例流程的圖;
[0020]圖4是示出該裝置的例子的圖;
[0021]圖5是示出圖像處理裝置或者多功能外設(shè)(MFP)的硬件配置的例子的圖;
[0022]圖6是示出通信終端的硬件配置的例子的圖;
[0023]圖7是示出程序產(chǎn)生裝置的示意性透視圖的圖;
[0024]圖8是程序產(chǎn)生裝置和程序執(zhí)行裝置的示例框圖;
[0025]圖9是示出文件代碼表的例子的圖;
[0026]圖10是示出程序的版本的例子的圖;
[0027]圖11是示出通過構(gòu)建工具產(chǎn)生的版本管理表的例子的圖;
[0028]圖12是示出錯(cuò)誤代碼的例子的圖;
[0029]圖13是示出源文件的描述的例子的圖;
[0030]圖14是示出在被轉(zhuǎn)換為錯(cuò)誤代碼之后的源文件的例子的圖;
[0031]圖15是示出程序產(chǎn)生裝置產(chǎn)生錯(cuò)誤代碼的處理的流程圖;
[0032]圖16是示出當(dāng)裝置或通信終端執(zhí)行程序時(shí)顯示錯(cuò)誤消息的處理的流程圖;
[0033]圖17是示出錯(cuò)誤代碼的例子(實(shí)施例2)的圖;
[0034]圖18是示出源文件的描述的例子(實(shí)施例2)的圖;[0035]圖19是示出其中第一變量與錯(cuò)誤號(hào)相關(guān)聯(lián)的錯(cuò)誤號(hào)表的例子的圖;
[0036]圖20是示出在被轉(zhuǎn)換為錯(cuò)誤代碼之后的源文件的例子的圖;
[0037]圖21是示出程序產(chǎn)生裝置產(chǎn)生錯(cuò)誤代碼的產(chǎn)生處理的例子(實(shí)施例)的流程圖;
[0038]圖22是示出當(dāng)程序執(zhí)行裝置執(zhí)行程序時(shí)顯示錯(cuò)誤消息的例子(實(shí)施例2)的流程圖;
[0039]圖23是示出錯(cuò)誤報(bào)告系統(tǒng)的配置的例子的圖;以及
[0040]圖24是示出程序執(zhí)行裝置和用于支持中心中的維護(hù)的終端的操作處理的流程圖。
[0041]參考標(biāo)記的描述
[0042]11:文件代碼產(chǎn)生部分
[0043]12:編譯部分
[0044]13:版本接受部分
[0045]14:代碼轉(zhuǎn)換部分
[0046]15:鏈接部分
[0047]16:壓縮部分
[0048]17:程序DL部分
[0049]18:錯(cuò)誤檢測(cè)部分
[0050]19:錯(cuò)誤消息顯示部分
[0051]20:程序
[0052]31:錯(cuò)誤號(hào)表
[0053]100:信息處理裝置
[0054]200:MFP
[0055]300:通信終端
[0056]301:通信系統(tǒng)
[0057]400:服務(wù)器
[0058]500:程序產(chǎn)生裝置
[0059]600:用于支持中心中的維護(hù)的終端
[0060]700:錯(cuò)誤報(bào)告系統(tǒng)
【具體實(shí)施方式】
[0061]以下描述本發(fā)明的實(shí)施例。
[0062]實(shí)施例1
[0063]概況
[0064]首先,描述根據(jù)此實(shí)施例的要在程序執(zhí)行裝置上顯示的錯(cuò)誤消息。
[0065]圖2例示根據(jù)此實(shí)施例的錯(cuò)誤消息的例子。圖2的錯(cuò)誤消息包括以下三個(gè)描述以及OK按鈕。
[0066]描述I 發(fā)生錯(cuò)誤”
[0067]描述2:“呼叫支持中心”
[0068]描述3:“0511-OlC-O”[0069]根據(jù)此實(shí)施例的錯(cuò)誤消息中的特征之一是源文件的行號(hào)被包括在描述3中。數(shù)據(jù)“01C”以十六進(jìn)制表示源文件的行號(hào)。數(shù)據(jù)“05”表示程序的版本。數(shù)據(jù)“11”表示其中發(fā)生錯(cuò)誤的文件的名稱。以下,整個(gè)描述3可以被稱為錯(cuò)誤代碼。
[0070]S卩,在大多數(shù)情況下,當(dāng)發(fā)生錯(cuò)誤時(shí)由計(jì)算機(jī)執(zhí)行的指令中不包括行號(hào),而是指示哪個(gè)行號(hào)對(duì)應(yīng)于原文件中的指令的信息(數(shù)據(jù))將被包括在描述3中。因此,用戶通過向支持中心等報(bào)告描述3的內(nèi)容,支持中心等可以準(zhǔn)確地指出(精確定位)發(fā)生了錯(cuò)誤的指令,這可以迅速地分析錯(cuò)誤的原因。
[0071]在圖2中,描述了錯(cuò)誤代碼被包括在錯(cuò)誤消息中的情況。但是,例如,可以單獨(dú)顯示錯(cuò)誤代碼(即在顯示錯(cuò)誤消息之前或之后顯示)。此外,程序的版本、文件名和行號(hào)也可以分開顯示。
[0072]此外,在此處,術(shù)語(yǔ)“錯(cuò)誤”指可以由程序檢測(cè)到的故障(即可預(yù)期的故障)。要注意,術(shù)語(yǔ)“錯(cuò)誤”不指代(不包括)諸如阻止錯(cuò)誤消息的顯示的非預(yù)期的故障(例如可能引起程序的中止的缺陷、以及可能使得難以執(zhí)行程序的硬件故障)。
[0073]在發(fā)生錯(cuò)誤時(shí)的示例測(cè)量
[0074]圖3例示當(dāng)在程序執(zhí)行裝置中發(fā)生錯(cuò)誤時(shí)直到分析錯(cuò)誤的原因的示例流程。
[0075]1.發(fā)生錯(cuò)誤,并且程序執(zhí)行裝置顯示錯(cuò)誤消息。然后,用戶知道發(fā)生錯(cuò)誤。
[0076]2.用戶基于錯(cuò)誤消息指出錯(cuò)誤原因。當(dāng)錯(cuò)誤恢復(fù)(被移除)時(shí),用戶可以繼續(xù)使用該程序執(zhí)行裝置。
[0077]另一方面,當(dāng)用戶通過檢查錯(cuò)誤消息、手冊(cè)等不能理解錯(cuò)誤的原因時(shí),用戶可以向程序執(zhí)行裝置的提供者的支持中心報(bào)告故障信息(即錯(cuò)誤消息、程序的版本、錯(cuò)誤發(fā)生狀態(tài)、錯(cuò)誤日志等)??梢酝ㄟ^使用電話或電子郵件進(jìn)行報(bào)告。用戶可以在除了錯(cuò)誤可能不能恢復(fù)的情況之外的任意情況下報(bào)告故障信息。這是因?yàn)樵S多程序執(zhí)行裝置可以通過重新啟動(dòng)而恢復(fù)。
[0078]3.支持中心基于報(bào)告的故障信息分析錯(cuò)誤的原因。在支持中心不能單獨(dú)幫助用戶恢復(fù)程序執(zhí)行裝置也不能指出錯(cuò)誤原因的情況下,該故障信息被進(jìn)一步報(bào)告給該程序執(zhí)行裝置的提供者(制造商)的開發(fā)部門。
[0079]4.開發(fā)部門基于該故障信息分析錯(cuò)誤原因并采取措施。
[0080]5.開發(fā)部門向支持中心報(bào)告分析結(jié)果。
[0081]6.支持中心將該分析結(jié)果以及在需要時(shí)將可能的措施報(bào)告給用戶。
[0082]在此,在以上的分析(步驟)“4.”中,故障信息中包括的信息越多,開發(fā)部門分析錯(cuò)誤原因變得越容易。但是,例如,可能不能總是獲取包括所有所需的信息的故障信息。即,獲取故障信息的難度可能依賴于情況而變化。
[0083]故障信息可以包括:
[0084](i)錯(cuò)誤(故障)發(fā)生狀態(tài)(例如,當(dāng)發(fā)生錯(cuò)誤時(shí)正在執(zhí)行何操作、在發(fā)生錯(cuò)誤之前執(zhí)行了何操作、硬件配置等等);
[0085](ii)向用戶顯示的錯(cuò)誤消息
[0086](iii)其中發(fā)生錯(cuò)誤的程序的版本;以及
[0087](iv)錯(cuò)誤日志。
[0088]例如,當(dāng)用戶仔細(xì)監(jiān)視(觀看)程序執(zhí)行裝置的操作狀態(tài)時(shí)可以獲得數(shù)據(jù)(i),但是如果用戶不仔細(xì)監(jiān)視操作狀態(tài),則獲取的信息可能有限。獲取的故障發(fā)生狀態(tài)的信息越詳細(xì),則變得越是期望。但是,要獲取的信息越詳細(xì),信息的獲取變得越困難。
[0089]可以在除了例如程序執(zhí)行裝置中止(hang up)時(shí)之外的許多情況下顯示數(shù)據(jù)(ii)(即錯(cuò)誤消息)。因此,對(duì)于用戶和支持中心來說可能容易獲取錯(cuò)誤消息。但是,如上所述,錯(cuò)誤消息可能不包括用于用戶或支持中心分析錯(cuò)誤原因的足夠信息。
[0090]通過獲取數(shù)據(jù)(iii)(即程序的版本),開發(fā)部門可以相對(duì)容易地估計(jì)錯(cuò)誤的原因。這是因?yàn)樵诰唧w版本中錯(cuò)誤的原因可能是唯一的并且可能有較高的可能性已經(jīng)報(bào)告了錯(cuò)誤和版本之間的關(guān)系的報(bào)告。為了獲取版本,用戶可能需要進(jìn)行具體操作,除非例如在開始程序時(shí)或者在程序開始以后自動(dòng)顯示版本。
[0091]此外,一旦獲取了版本,就可以因而獲取程序中所包括的各個(gè)文件的版本。因此,可以變得更容易分析具體于該程序版本的錯(cuò)誤原因。
[0092]數(shù)據(jù)(iv)(即錯(cuò)誤日志)可以包括所有數(shù)據(jù)⑴到(iv)。錯(cuò)誤日志可以包括用于指出錯(cuò)誤的詳細(xì)情況以及發(fā)生錯(cuò)誤的地點(diǎn)(部分)的信息,特別是包括發(fā)生錯(cuò)誤的文件的名稱以及程序的版本的、對(duì)于進(jìn)行詳細(xì)分析至關(guān)重要的信息。因此,最希望獲取錯(cuò)誤日志。但是,錯(cuò)誤日志包含了最難獲取的信息。如上所述,此原因是,用戶不愿意向外部提供這樣的信息。另外,裝置的提供者也不愿意允許用戶容易地(直接)訪問錯(cuò)誤日志。
[0093]在此實(shí)施例中,甚至開發(fā)部門難以獲取錯(cuò)誤日志,支持中心也可能能夠基于錯(cuò)誤消息中包括的錯(cuò)誤代碼獲取等同于錯(cuò)誤日志的信息。即,錯(cuò)誤代碼包括指示程序的版本的信息項(xiàng)、發(fā)生錯(cuò)誤的文件的名稱以及源文件的行號(hào)。因此,可能變得開發(fā)部門能夠準(zhǔn)確地指出(精確定位)發(fā)生了錯(cuò)誤的地點(diǎn)(部分)(即在發(fā)生錯(cuò)誤時(shí)正在執(zhí)行哪個(gè)文件的哪部分)。
[0094]示例配置
[0095]程序執(zhí)行裝置
[0096]如下所述,為了顯示源文件的行號(hào),在要由程序執(zhí)行裝置執(zhí)行的程序中已經(jīng)包括了行號(hào)。因此,此實(shí)施例中的程序執(zhí)行裝置可以具有用于執(zhí)行該程序的任何適當(dāng)?shù)呐渲?,比如單?dú)類型的客戶端以及經(jīng)由網(wǎng)絡(luò)連接的終端或服務(wù)器。
[0097]圖4的部分(a)示出了作為單獨(dú)類型的程序執(zhí)行裝置的信息處理裝置100的示意性透視圖的例子。圖4的部分(b)示出了多功能外設(shè)(MFP) 200的示意性透視圖的例子。信息處理裝置100以及MFP200兩者包括中央處理單元(CPU)和程序,從而可以通過由CPU執(zhí)行程序而進(jìn)行特定于該程序的處理。當(dāng)發(fā)生錯(cuò)誤時(shí),信息處理裝置100或MFP200顯示錯(cuò)誤代碼。
[0098]圖4的部分(C)示出通信系統(tǒng)301的示意性配置圖的例子。在通信系統(tǒng)301中,多個(gè)通信終端300 (下文中當(dāng)希望相互區(qū)分它們時(shí)可以稱為通信終端A、B)和服務(wù)器400 (經(jīng)由網(wǎng)絡(luò))相互連接。通信終端A位于一個(gè)區(qū)域中(例如在美國(guó)),并且另一通信終端A位于另一區(qū)域中(例如在日本),并且通信終端A、B經(jīng)由服務(wù)器400和網(wǎng)絡(luò)彼此通信地連接。
[0099]通信終端A、B包括各自的相機(jī)、揚(yáng)聲器和麥克風(fēng),并且本地地連接到各自的顯示設(shè)備。在通信終端A附近的用戶的聲音(語(yǔ)音)由通信終端A的麥克風(fēng)收集并且被轉(zhuǎn)換為電信號(hào)以發(fā)送到通信終端B。通信終端B的揚(yáng)聲器將該電信號(hào)轉(zhuǎn)換為聲音以便從揚(yáng)聲器輸出該聲音。這也適用于由相機(jī)捕捉的圖像。即,通信終端A將通信終端A的相機(jī)捕捉的圖像轉(zhuǎn)換為電信號(hào)以發(fā)送到通信終端B。通信終端B將該電信號(hào)轉(zhuǎn)換為圖像以顯示在通信終端B的顯示設(shè)備上。這可以允許位于不同區(qū)域的用戶使用聲音和圖像彼此通信。此外,作為顯示設(shè)備,例如可以使用投影儀或者液晶顯示器。作為通信系統(tǒng)301的具體例子,存在已知的電話會(huì)議系統(tǒng)。
[0100]在圖4的程序執(zhí)行裝置中,MFP200和通信終端300可以稱為S。此實(shí)施例中的錯(cuò)誤消息在其中關(guān)于程序執(zhí)行裝置的操作的數(shù)量對(duì)于用戶是有限的這種s中可以特別有效。通常,術(shù)語(yǔ)“嵌入式裝置”可能未被很好地定義。但是,例如,認(rèn)為嵌入式裝置不包括通用信息處理裝置(即個(gè)人計(jì)算機(jī)(PC))。
[0101]圖5示出信息處理裝置100或MFP200的硬件配置的例子。在此,MFP200的硬件配置限于與程序20的執(zhí)行有關(guān)的部分。即,除了所示的部分中的功能之外,MFP200可以(通常)包括諸如掃描儀、繪圖儀、傳真機(jī)等其他功能。
[0102]信息處理裝置100或MFP200包括CPU201、只讀存儲(chǔ)器(R0M)202、隨機(jī)存取存儲(chǔ)器(RAM)203、硬盤(HD)204、硬盤驅(qū)動(dòng)器(HDD)205、介質(zhì)驅(qū)動(dòng)器207、顯示器208、網(wǎng)絡(luò)接口(I/F)209、鍵盤211、鼠標(biāo)212、緊湊盤只讀存儲(chǔ)器(CD-ROM)驅(qū)動(dòng)器214和總線210。CPU201控制整個(gè)裝置的操作。R0M202存儲(chǔ)初始程序加載器(IPL)和靜態(tài)數(shù)據(jù)。RAM203被用作CPU201的工作區(qū)。HD204存儲(chǔ)要由CPU201執(zhí)行的程序20以及各種數(shù)據(jù)。HDD205在CPU201的控制下驅(qū)動(dòng)HD204以向和從HD204寫入和讀取各種數(shù)據(jù)。介質(zhì)驅(qū)動(dòng)器207控制相對(duì)于于諸如閃存的記錄介質(zhì)206讀取和寫入(存儲(chǔ))數(shù)據(jù)。顯示器208顯示包括光標(biāo)、菜單、窗口、字符、圖像等各種信息。網(wǎng)絡(luò)I/F209是用于使用通信網(wǎng)絡(luò)2的數(shù)據(jù)傳輸?shù)慕涌?。鍵盤211包括用于輸入字符、數(shù)字和各種指令的多個(gè)鍵。鼠標(biāo)212用于選擇和執(zhí)行各種指令、選擇要執(zhí)行的處理、移動(dòng)光標(biāo)等。⑶-ROM驅(qū)動(dòng)器214控制相對(duì)于作為可拆卸記錄介質(zhì)的例子的⑶-R0M213等讀取和寫入各種數(shù)據(jù)??偩€210包括地址總線和數(shù)據(jù)總線以提供如圖5中所示的配置元件之間的電連接。
[0103]在此,程序20可以是具有可安裝格式或可執(zhí)行格式的文件,并且可以通過將程序20存儲(chǔ)到諸如記錄介質(zhì)206、⑶-R0M213等計(jì)算機(jī)可讀記錄介質(zhì)來分發(fā)。此外,程序20可以是下述文件,該文件具有來自服務(wù)器(未示出)的可安裝格式或可執(zhí)行格式或者具有可由服務(wù)器安裝的格式或者可由服務(wù)器執(zhí)行的格式,以便被分發(fā)到信息處理裝置100或MFP200的文件。
[0104]圖6示出通信終端300的硬件配置的例子。如圖6所示,本實(shí)施例中的通信終端300包括CPU101、R0M102、RAM103、閃存104、固態(tài)驅(qū)動(dòng)器(SSD) 105、介質(zhì)驅(qū)動(dòng)器107、操作按鈕108、電力開關(guān)109和網(wǎng)絡(luò)I/Flll。CPUlOl控制整個(gè)通信終端300的操作。R0M102存儲(chǔ)IPL和靜態(tài)數(shù)據(jù)。RAM103被用作CPUlOl的工作區(qū)。閃存104存儲(chǔ)包括程序20、圖像數(shù)據(jù)、聲音數(shù)據(jù)等的各種數(shù)據(jù)。SSD105在CPUlOl的控制下控制相對(duì)于閃存104寫入和讀取各種數(shù)據(jù)。介質(zhì)驅(qū)動(dòng)器107控制相對(duì)于諸如閃存的記錄介質(zhì)106寫入和讀取(存儲(chǔ))數(shù)據(jù)。操作按鈕108用于例如選擇終端100的目的地。電力開關(guān)109用于接通和斷開終端100的電力。網(wǎng)絡(luò)I/F111是用于經(jīng)由通信網(wǎng)絡(luò)2的數(shù)據(jù)傳輸?shù)慕涌凇4送?,關(guān)于通信終端300可拆卸地提供記錄介質(zhì)106。
[0105]通信終端300還包括相機(jī)112、成像設(shè)備I/F113、麥克風(fēng)114、揚(yáng)聲器115、聲音輸入/輸出I/F1116、顯示器I/F117、外部裝置連接I/F118以及總線110。相機(jī)112在CPUlOl的控制下拍攝成像對(duì)象的圖像以獲取相應(yīng)的圖像數(shù)據(jù),并且相機(jī)112被嵌入在終端300中。成像設(shè)備I/F113用于控制相機(jī)112的驅(qū)動(dòng)。麥克風(fēng)114輸入聲音,并且嵌入在通信終端300中。揚(yáng)聲器115輸出聲音,并且嵌入在通信終端300中。聲音輸入/輸出I/F116在CPUlOl的控制下對(duì)在麥克風(fēng)114和揚(yáng)聲器115之間的聲音信號(hào)進(jìn)行輸入和輸出處理。顯不器I/F117在CPUlOl的控制下將圖像數(shù)據(jù)發(fā)送到外部顯示設(shè)備120。外部裝置連接I/F118是用于與各種外部裝置連接的接口。總線110包括地址總線和數(shù)據(jù)總線,以提供在如圖6所示的配置元件之間的電連接。
[0106]假設(shè)圖6中的顯示設(shè)備120是顯示成像對(duì)象的圖像和用于操作的圖標(biāo)的包括液晶的液晶顯示器(IXD)或有機(jī)EL顯示器。但是,顯示設(shè)備120可以是投影儀。顯示設(shè)備120經(jīng)由電纜120c連接到顯示I/F117。
[0107]相機(jī)和揚(yáng)聲器可以不嵌入在通信終端300中,并且可以是經(jīng)由通用串行總線(USB)電纜等外部地連接到外部裝置連接I/F118的外部類型。
[0108]程序20不總是存儲(chǔ)在閃存104中。這是因?yàn)樵谕ㄐ畔到y(tǒng)301中,適合于通信終端300的類型的程序20可以從服務(wù)器400下載。但是,在程序20正輸出錯(cuò)誤消息時(shí),程序20可以存儲(chǔ)在閃存104中。因此,程序20可以被當(dāng)作通信終端300的一部分。
[0109]程序20可以是具有可安裝或可執(zhí)行格式的文件,并且可以使用存儲(chǔ)了程序20的諸如記錄介質(zhì)106的計(jì)算機(jī)可讀記錄介質(zhì)來分發(fā)。
[0110]程序產(chǎn)生裝置
[0111]在此實(shí)施例中,要由程序執(zhí)行裝置(例如信息處理裝置100、MFP200、通信終端300)執(zhí)行的程序20包括源文件的行號(hào)。因此,存在產(chǎn)生這樣的特殊程序20的裝置(下文中將該裝置稱為程序產(chǎn)生裝置)。該程序產(chǎn)生裝置可以是在通用(多用途)操作系統(tǒng)(OS)(例如Windows (注冊(cè)商標(biāo))、UNIX (注冊(cè)商標(biāo))、Linux (注冊(cè)商標(biāo)))上運(yùn)行的信息處理裝置。因此,從功能的觀點(diǎn)看,在程序產(chǎn)生裝置和圖5中的信息處理裝置之間可能沒有很大差別。但是,通常,這樣的程序產(chǎn)生裝置位于提供者處。在這點(diǎn)上,程序產(chǎn)生裝置可以不同于執(zhí)行程序20的程序執(zhí)行裝置。
[0112]圖7的部分(a)示出程序產(chǎn)生裝置500的示意性透視圖的例子。圖7的部分(b)示出程序產(chǎn)生裝置500的硬件配置的例子。程序產(chǎn)生裝置500包括CPU501、RAM502、R0M503、記錄介質(zhì)安裝部分504、通信設(shè)備505、輸入設(shè)備506、繪圖控制部分507和HDD508。CPU501通過從HDD508讀取和執(zhí)行OS以及構(gòu)建工具511提供各種功能,并進(jìn)行產(chǎn)生校正的草稿圖像數(shù)據(jù)的處理。
[0113]RAM502用作暫時(shí)存儲(chǔ)CPU501執(zhí)行構(gòu)建工具511所需的數(shù)據(jù)的工作區(qū)(主存儲(chǔ)器)。R0M503存儲(chǔ)用于開始基本輸入輸出系統(tǒng)(BIOS)和OS的IPL、以及靜態(tài)數(shù)據(jù)。
[0114]記錄介質(zhì)510附連到記錄介質(zhì)安裝部分504以及從記錄介質(zhì)安裝部分504拆卸。記錄介質(zhì)安裝部分504讀取存儲(chǔ)在記錄介質(zhì)510中的數(shù)據(jù)并將該數(shù)據(jù)存儲(chǔ)在HDD508中。此夕卜,記錄介質(zhì)安裝部分504可以將存儲(chǔ)在HDD508中的數(shù)據(jù)寫到記錄介質(zhì)510中。記錄介質(zhì)510可以是例如USB存儲(chǔ)器或SD卡。
[0115]輸入設(shè)備506包括例如鍵盤、鼠標(biāo)和軌跡球,并且接收來自用戶的針對(duì)程序產(chǎn)生裝置500的各種操作指令。HDD508可以是諸如固態(tài)驅(qū)動(dòng)器(SSD)的非易失性存儲(chǔ)器,并且存儲(chǔ)OS以及諸如構(gòu)建工具511的各種數(shù)據(jù)。
[0116]通信設(shè)備505是用于連接到諸如因特網(wǎng)的網(wǎng)絡(luò)的網(wǎng)絡(luò)接口卡(NIC),并且可以是以太網(wǎng)(注冊(cè)商標(biāo))卡。
[0117]繪圖控制部分507解釋通過由CPU501執(zhí)行構(gòu)建工具511而已經(jīng)寫在圖形存儲(chǔ)器中的繪圖命令,并且在顯示器509上繪圖,由此產(chǎn)生屏幕。
[0118]構(gòu)建工具511是具有可安裝格式或者可執(zhí)行格式的文件,并且可以用存儲(chǔ)該構(gòu)建工具511的記錄介質(zhì)510或者通過服務(wù)器(未示出)來分發(fā)。
[0119]功能塊
[0120]圖8示出程序產(chǎn)生裝置500和程序執(zhí)行裝置的功能框圖的例子。程序產(chǎn)生裝置500使用構(gòu)建工具511構(gòu)建源文件,并且產(chǎn)生程序20。構(gòu)建工具511包括編譯部分12、鏈接部分15、壓縮部分16、文件代碼產(chǎn)生部分11、版本接受部分13和代碼轉(zhuǎn)換部分14。在這些之中,代碼轉(zhuǎn)換部分14可以獨(dú)立地提供或者包括在編譯部分12中作為編譯部分12的一部分。
[0121]編譯部分12、鏈接部分15和壓縮部分16是由構(gòu)建工具511提供的已知的功能。即,編譯部分12編譯以C、C++、JAVA (注冊(cè)商標(biāo),下文中省略)等寫出的源文件,并且對(duì)于每個(gè)源文件產(chǎn)生對(duì)象模塊文件。然后,鏈接部分15鏈接多個(gè)對(duì)象模塊文件以產(chǎn)生對(duì)象文件。
[0122]壓縮部分16將目錄中的文件與指定的目錄結(jié)構(gòu)組合并壓縮,以便壓縮文件具有諸如jar”、“*.war”、“*.exe”等的文件擴(kuò)展。壓縮文件是程序20。程序執(zhí)行裝置可以解壓縮并執(zhí)行壓縮的程序20,并且可以將該程序作為可執(zhí)行文件直接執(zhí)行。
[0123]構(gòu)建工具511的可操作內(nèi)容由構(gòu)建文件22定義。構(gòu)建文件22以可擴(kuò)展標(biāo)記語(yǔ)言(XML)中描述,并且定義了如何構(gòu)建源文件以及產(chǎn)生工程(即在此實(shí)施例中的程序)的構(gòu)建方法。
[0124]?描述BI定義“程序A”作為工程(project)名稱。
[0125]?描述B2定義變量名稱,并將目錄名稱“文件”、“主頁(yè)”、“bin”和“js”存儲(chǔ)為變量。在此,“文件”和“主頁(yè)”已經(jīng)存在。
[0126]?描述B3定義以產(chǎn)生目錄“bin”和“js”。
[0127]?描述B4定義(指示)編譯“文件”中的源文件,并將其復(fù)制到文件“bin”。
[0128]?描述B5定義(指示)將文件中的文件“calk, js”復(fù)制到目錄“ js”。
[0129]?描述B6定義(指示)壓縮在“主頁(yè)”之下的目錄和文件并產(chǎn)生壓縮文件“programA.war,,。
[0130]當(dāng)開發(fā)者(開發(fā) 工程師)指示開始構(gòu)建時(shí),構(gòu)建工具511讀取諸如構(gòu)建文件22并開始構(gòu)建。構(gòu)建文件22可以由開發(fā)者描述,或者可以通過由構(gòu)建工具511分析在開發(fā)的源文件的文件內(nèi)容而自動(dòng)產(chǎn)生。
[0131]文件代碼產(chǎn)生部分11指定要構(gòu)建的所有目標(biāo)文件,將這些文件與唯一的文件代碼(標(biāo)識(shí)信息)相關(guān)聯(lián),并產(chǎn)生文件代碼表21。在圖8的構(gòu)建文件22中,要構(gòu)建的所有目標(biāo)文件是要編譯的文件目錄中的文件以及復(fù)制源的文件calk, js。因此,可以給出不用于文件目錄中的文件的文件代碼。
[0132]圖9示出文件代碼表21的例子。在文件代碼表21中,對(duì)于彼此而言唯一的文件代碼與作為用于構(gòu)成程序20的原始文件的所有文件相關(guān)聯(lián)。文件代碼產(chǎn)生部分11參考例如構(gòu)建文件22,并提取在描述B4中要編譯的文件中的所有源文件以及作為描述B5中的復(fù)制源的源文件。然后,對(duì)那些文件給出文件代碼。[0133]文件代碼表21可以由開發(fā)者產(chǎn)生。在此情況下,文件代碼產(chǎn)生部分11可能不是必需的。
[0134]版本接受部分13接收來自開發(fā)者的程序20的版本的輸入。程序的版本在以下描述。
[0135]此外,代碼轉(zhuǎn)換部分14將在文件中描述的具體功能轉(zhuǎn)換為程序20的版本、文件代碼和源文件的行號(hào)(在轉(zhuǎn)換為十六進(jìn)制之后)。即,產(chǎn)生錯(cuò)誤代碼。由于此轉(zhuǎn)換,變得能夠在發(fā)生錯(cuò)誤時(shí)由程序20顯示源文件的行號(hào)。
[0136]代碼轉(zhuǎn)換部分14是被包括在編譯部分12中還是在編譯部分12之外將對(duì)應(yīng)于要構(gòu)建的目標(biāo)文件是否需要編譯。因此,處理的內(nèi)容可以一致。例如,在JavaScript(注冊(cè)商標(biāo),下文中可以省略)中描述的文件將不被編譯。因此,在編譯部分12之外的代碼轉(zhuǎn)換部分14產(chǎn)生錯(cuò)誤代碼。另一方面,在C++或者JAVA中描述的文件將被編譯。因此,編譯部分12中的代碼轉(zhuǎn)換部分14產(chǎn)生錯(cuò)誤代碼。如果代碼轉(zhuǎn)換部分14在編譯之前產(chǎn)生錯(cuò)誤代碼,則僅可以安裝在編譯部分12之外的代碼轉(zhuǎn)換部分14。
[0137]除了特定于程序20的各種功能之外,已經(jīng)如上所述由構(gòu)建工具511產(chǎn)生的程序20還包括錯(cuò)誤檢測(cè)部分18和錯(cuò)誤消息顯示部分19。錯(cuò)誤檢測(cè)部分18通過使用if語(yǔ)句等確定變量的內(nèi)容來檢測(cè)錯(cuò)誤的發(fā)生。錯(cuò)誤消息顯示部分19檢測(cè)錯(cuò)誤的發(fā)生并且在顯示器208、120上繪出錯(cuò)誤消息。
[0138]此外,程序DL部分17主要安裝在通信終端300上。例如,當(dāng)通信終端300的電力接通時(shí),IPL開始使 得CPUlOl執(zhí)行程序DL部分17。程序DL部分17通過使用例如FTP命令指定已知服務(wù)器400的IP地址而連接到服務(wù)器400,并通過使用get命令指定程序20的文件名來從服務(wù)器400下載程序20。
[0139]此外,當(dāng)通信終端300的電力關(guān)閉時(shí),通信終端300刪除閃存104中的程序20。這樣做,變得能夠防止從通信終端300偷竊程序20。
[0140]程序的版本
[0141]圖10是例示程序20的版本的例子。經(jīng)由稱為構(gòu)建的處理基于多個(gè)源文件產(chǎn)生具有一定規(guī)模(scale)的程序20。圖10示出其中基于稱為main, cpp的C++語(yǔ)言源文件、稱為base, h的由main, cpp使用的頭部文件、稱為calk, js的JavaScript源文件(這也稱為源文件是因?yàn)镴avascript未被編譯但是是構(gòu)建的目標(biāo))等產(chǎn)生單個(gè)程序20的情況。
[0142]在此,術(shù)語(yǔ)“構(gòu)建”指通過組合那些文件產(chǎn)生“可執(zhí)行文件”。進(jìn)行“構(gòu)建”的是程序產(chǎn)生裝置500,該程序產(chǎn)生裝置500由開發(fā)者使用。通常,諸如“Make”和“ANT”的構(gòu)建工具511是商業(yè)上可獲得的。通過由程序產(chǎn)生裝置500執(zhí)行構(gòu)建工具511,可以產(chǎn)生作為程序20的可執(zhí)行文件(例如*? war、*? jar、*? exe文件)。
[0143]然后,通過組合那些多個(gè)文件的版本,管理程序20的版本。例如,當(dāng)僅calk, js的版本改變時(shí)(即當(dāng)僅更新calk, js并且任何其他文件未被改變時(shí)),通過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的版本在進(jìn)行構(gòu)建時(shí)由開發(fā)者設(shè)置。例如可以通過由開發(fā)者將程序20的版本與源文件的版本一起記錄來管理程序20的版本。但是,經(jīng)常使用專用的版本管理系統(tǒng)。作為版本管理系統(tǒng),存在已知的例如作為免費(fèi)軟件的并行版本系統(tǒng)(CVS)、分支版本(SVN)和Git、以及VisualSourceSafe (注冊(cè)商標(biāo))。在SVN的情況下,程序20的版本如下給出:
[0148]SI):開發(fā)者通過使用版本管理系統(tǒng)的推薦(輸入)在儲(chǔ)存庫(kù)中登記目錄結(jié)構(gòu),該目錄結(jié)構(gòu)包括以樹形登記的源文件。該儲(chǔ)存庫(kù)是存儲(chǔ)了資源(源文件等)的區(qū)域。在此時(shí),版本管理系統(tǒng)給出修訂版I作為該工程的初始版本。
[0149]S2):存在開發(fā)者編輯一個(gè)或多個(gè)源文件的情況。當(dāng)開發(fā)者希望記錄已經(jīng)被編輯的源文件的組合時(shí),開發(fā)者使用版本管理系統(tǒng)的命令(commit (提交))來將編輯結(jié)果存儲(chǔ)到儲(chǔ)存庫(kù)中。版本管理系統(tǒng)將該工程的修訂版提高為2,并將新版本添加到新的源文件。
[0150]S3):當(dāng)通過對(duì)源文件進(jìn)行構(gòu)建而從該工程產(chǎn)生了程序20時(shí),開發(fā)者使用版本管理系統(tǒng)的命令(copy (復(fù)制))而給出標(biāo)簽名。通過給出標(biāo)簽名,源文件在該時(shí)刻的版本或者具有不同的版本的源文件與該標(biāo)簽名相關(guān)聯(lián)并且由版本管理系統(tǒng)存儲(chǔ)。通常,標(biāo)簽名被給出為“標(biāo)簽=程序20的版本”。
[0151]通過給出標(biāo)簽名,一旦已知程序20的版本,版本管理系統(tǒng)就唯一地指明用于構(gòu)建的源文件。
[0152]然后,通過開發(fā)者的操作,構(gòu)建工具511以如下方式進(jìn)行構(gòu)建:因?yàn)榻o出了標(biāo)簽名,目錄結(jié)構(gòu)和源文件的內(nèi)容不改變(即沒有添加新的改變)。當(dāng)進(jìn)行構(gòu)建時(shí),開發(fā)者指定標(biāo)簽名為程序20的版本。
[0153]然后,當(dāng)將要采用與程序20的版本對(duì)應(yīng)的源文件時(shí),開發(fā)者指定標(biāo)簽名以指明源文件。
[0154]此外,存在進(jìn)行構(gòu)建和版本管理兩者的IDE。因此,可能不總是需要分開地提供構(gòu)建工具511和版本管理系統(tǒng)。
[0155]圖11示出由構(gòu)建工具511產(chǎn)生的版本管理表的例子。構(gòu)建工具511獲取源文件的版本或時(shí)間戳,并將獲取的版本或時(shí)間戳與程序20的版本相關(guān)聯(lián)并存儲(chǔ)。因此,當(dāng)檢測(cè)到程序20的版本時(shí),通過參考版本管理表,可以指明在與該版本對(duì)應(yīng)的程序中包括的文件的版本。版本管理表由開發(fā)部門管理。
[0156]此外,在圖10的源文件中,類型(例如描述語(yǔ)言)可能不同。但是,構(gòu)建工具511可以僅對(duì)具有相同類型的文件(例如僅以C++描述的文件)進(jìn)行構(gòu)建。在此情況下,構(gòu)建工具511僅進(jìn)行編譯和鏈接。無(wú)論這樣的部分處理被稱為構(gòu)建還是編譯,這僅僅是名稱。即,甚至當(dāng)源文件具有單個(gè)類型時(shí),程序執(zhí)行裝置也可以顯示行號(hào)。
[0157]錯(cuò)誤代碼
[0158]圖12示出錯(cuò)誤代碼的例子。在圖12中,錯(cuò)誤代碼具有總共10位字符(數(shù)字)通過從最左邊的位添加(計(jì)數(shù))位編號(hào)來描述錯(cuò)誤代碼。錯(cuò)誤代碼的前兩位表示程序20的版本的最后兩位。例如,當(dāng)程序20的版本是“0.2.0.5”時(shí),數(shù)據(jù)是“05”。為何僅使用2位的原因是為了與需要報(bào)告更長(zhǎng)的錯(cuò)誤代碼的情況相比減少向服務(wù)中心報(bào)告錯(cuò)誤的數(shù)字的風(fēng)險(xiǎn)。此外,錯(cuò)誤代碼包括(連字符),使錯(cuò)誤代碼可以變得更可讀并且連字符沒有意義。
[0159]其可能取決于如何描述版本,但是當(dāng)開發(fā)者以十進(jìn)制逐一遞增版本時(shí),在使用最后兩位時(shí)標(biāo)識(shí)100個(gè)版本。因此,單獨(dú)使用版本的最后兩位對(duì)于分析錯(cuò)誤代碼可能是足夠的(充分的容量)。
[0160]錯(cuò)誤代碼的第三和第四位中的兩個(gè)字符表示輸出錯(cuò)誤消息的源文件的文件代碼。如參考圖9所述,文件代碼是唯一地標(biāo)識(shí)源文件的文件名的十六進(jìn)制數(shù)字。利用十六進(jìn)制的兩位,可以標(biāo)識(shí)255個(gè)文件。該文件代碼對(duì)于大規(guī)模的程序20中的文件代碼可能是不夠的,但是對(duì)于具有一般規(guī)模的程序可以是足夠的。當(dāng)文件代碼變得不夠時(shí),用于連字符的第五位也可以用于增加用于文件代碼的位數(shù)。為何通過使用文件代碼來表達(dá)和顯示文件名不僅是為了盡可能降低長(zhǎng)度而且還為了防止包括程序20的功能的信息被用戶等基于文件名而知道。
[0161]第六到第八位的三個(gè)字符表示輸出錯(cuò)誤消息的源文件的十六進(jìn)制的行號(hào)。當(dāng)使用十六進(jìn)制的三位時(shí),表達(dá)多達(dá)4096行。當(dāng)一個(gè)源文件的代碼量更大時(shí),此容量可能不夠。但是,認(rèn)為在許多情況下該容量可以是足夠的。但是,如果4096行不夠,則用于連字符的第九位也可以用于增加用于行號(hào)的位數(shù)。使用十六進(jìn)制來表達(dá)行號(hào)的原因是為了降低錯(cuò)誤代碼的長(zhǎng)度。
[0162]第十位的一個(gè)字符可以任意使用。例如,源文件的開發(fā)者可以使用此來描述對(duì)于當(dāng)產(chǎn)生源文件時(shí)分析錯(cuò)誤原因有效的信息。該任意一個(gè)字母的使用可以使得開發(fā)者分析錯(cuò)k原因更各易。
[0163]源文件的例子
[0164]圖13示出源文件的描述的例子。圖13的源文件包括逐一增加的整數(shù)的行號(hào)。在實(shí)際的源文件中,不包括行號(hào)。但是,在IDE和編輯器中,添加逐一增加的序號(hào)以支持開發(fā)者。
[0165]在圖13中,稱為“printEirorDialog”的函數(shù)用于顯示錯(cuò)誤消息(見行11、28和105)。當(dāng)該函數(shù)由程序執(zhí)行裝置執(zhí)行時(shí),該程序執(zhí)行裝置顯示具有如圖2中的格式的錯(cuò)誤消息(即包括描述1-3以及一個(gè)OK按鈕)。
[0166]此函數(shù)取三個(gè)自變量!printErrorDialogCerrorTitlel,errorMessagel, createCode(_reason)。
[0167]第一自變量“errorTitlel”指定圖1中的描述I,第二自變量“errorMessagel”指定描述2。在“errorTitlel”和“errorMessagel”中,在該行(未不出)中設(shè)置字符串。該字符串存儲(chǔ)在RAM203、103、HD204和閃存104的預(yù)定地址中。當(dāng)執(zhí)行該函數(shù)時(shí),程序執(zhí)行裝置從RAM203、103、HD204和閃存104讀取在由“errorMessagel”指定的地址處的字符串以及在由“errorMessagel”指定的地址處的字符串。
[0168]函數(shù)“printErrorDialog”的第三自變量“createCode () ”對(duì)應(yīng)于描述3,并且變?yōu)橛缅e(cuò)誤代碼的替換目標(biāo)。createCodeO是產(chǎn)生錯(cuò)誤代碼并采用一個(gè)自變量的函數(shù)。當(dāng)執(zhí)行“printErrorDialog”時(shí),由于字符串,createCodeO可能不使用。因此,不是函數(shù)而是變量可以用錯(cuò)誤代碼來代替。createCodeO函數(shù)在相關(guān)技術(shù)的錯(cuò)誤消息中顯示錯(cuò)誤代碼。因此,通過用錯(cuò)誤代碼與該函數(shù)交換,開發(fā)者可以改變?cè)创a以便通過使用原始的源文件在此實(shí)施例中顯示錯(cuò)誤代碼。
[0169]代碼轉(zhuǎn)換部分14將createCode O替換為程序20的版本、文件代碼和行號(hào),并且進(jìn)一步用錯(cuò)誤代碼的任意一個(gè)字符替換createCode O的自變量。該任意一個(gè)字符在行11和28中被給出為createCodeO中的變量,并且在行105中被給出為字符常數(shù)“2”。如在行3中,描述了“_reason= “O””。因此,通過交換行28中的createCode O與行11中的createCode O ,該任意一個(gè)字符是“O”。另一方面,當(dāng)替換行105中的createCode O時(shí),任意一個(gè)字符是“2”。該任意一個(gè)字符意味著什么可以由源文件的開發(fā)者使用例如將該一個(gè)字符與內(nèi)容(含義)相關(guān)聯(lián)的表格來管理。
[0170]在圖13中,在行11、28和105中分別描述了三個(gè)“printErrorDialog”函數(shù)。依賴于已經(jīng)發(fā)生的錯(cuò)誤的地點(diǎn)或狀態(tài)(即依賴于最后的處理),開發(fā)者可以改變自變量。因此,描述I和2的內(nèi)容也可以改變。自然,如在行11和28中,多個(gè)“printErrorDialog”函數(shù)可以具有相同的自變量。
[0171]如上所述,當(dāng)僅提供了描述I和2并且在多個(gè)部分中使用相同的消息時(shí),甚至開發(fā)者可能都不能容易地指出或者根本不能指出從哪里輸出了錯(cuò)誤消息。但是,通過如在此實(shí)施例中將錯(cuò)誤代碼嵌入在源代碼中,甚至當(dāng)描述I和2相同時(shí),也變得能夠唯一地確定從源代碼的哪部分(哪行)輸出了錯(cuò)誤消息。
[0172]例如,如果行號(hào)28行包括在錯(cuò)誤代碼中,則開發(fā)者可以明確由于在源文件的行28中的“printErrorDialog”函數(shù)而顯示了輸出的錯(cuò)誤消息。因此,開發(fā)者可以明確存在可能引起錯(cuò)誤的處理,該處理在源文件的行28附近。在圖3的例子中,可能引起錯(cuò)誤的處理位于錯(cuò)誤代碼中所包括的行號(hào)之前幾行。
[0173]就在“printErrorDialog”函數(shù)之前,描述了使用例如if語(yǔ)句確定錯(cuò)誤的發(fā)生的處理。作為確定錯(cuò)誤的發(fā)生的處理,開發(fā)者通常描述最佳的確定條件以便基于被認(rèn)為在就在確定錯(cuò)誤的發(fā)生的該處理之前的處理中已經(jīng)發(fā)生的錯(cuò)誤來檢測(cè)錯(cuò)誤是否發(fā)生。例如,當(dāng)在變量“operation”中設(shè)置稱為“failure”的值時(shí),顯示行11中的錯(cuò)誤消息。當(dāng)在變量“errorOccured”中設(shè)置了除了 “O”之外的值時(shí),顯示行28中的錯(cuò)誤消息。當(dāng)在變量“getValue”中設(shè)置了值“null”(沒有)時(shí)顯示行105中的錯(cuò)誤消息。因此,變得能夠可靠地檢測(cè)特定于處理的錯(cuò)誤。變量“operation”、變量“errorOccured”和變量“getValue”實(shí)際存儲(chǔ)在RAM203、103、HDD204和閃存104中的預(yù)定地址處。當(dāng)程序執(zhí)行裝置基于變量名訪問該地址時(shí),可以確定錯(cuò)誤的發(fā)生。
[0174]在此,使用if語(yǔ)句確定錯(cuò)誤的發(fā)生僅僅是一個(gè)例子。例如,可以使用Switch語(yǔ)句確定錯(cuò)誤的發(fā)生。
[0175]圖14示出包括被替換的錯(cuò)誤代碼的源文件的例子。
[0176]如當(dāng)與圖13比較時(shí)顯而易見的,用0511-00B-0替換了行11中的CreateCode (_Reason);用 0511-01C-0 替換了行 28 中的 CreateCode (_Reason);用 0511-0690-2 替換了行 105 中的 CreateCode ( “2”)。
[0177]操作過程
[0178]圖15是示出由程序產(chǎn)生裝置500產(chǎn)生錯(cuò)誤代碼的處理的流程圖的例子。在此,在該處理中,描述了其中代碼轉(zhuǎn)換部分14在編譯部分12以外提供的情況。但是,如果代碼轉(zhuǎn)換部分14在編譯部分12以外提供,執(zhí)行定時(shí)可能不同,但是處理的內(nèi)容相同。
[0179]在對(duì)文件進(jìn)行構(gòu)建時(shí),開發(fā)者可以將構(gòu)建之后的程序20的版本設(shè)置到程序產(chǎn)生裝置500 (步驟SlO)。程序產(chǎn)生裝置500的版本接受部分13接受版本的輸入。
[0180]接下來,文件代碼產(chǎn)生部分11產(chǎn)生文件代碼表21 (步驟S20)??梢詮臉?gòu)建文件22指出要對(duì)其進(jìn)行構(gòu)建的源文件。在上圖的例子中,在文件目錄下的文件對(duì)應(yīng)于要對(duì)其進(jìn)行構(gòu)建的源文件。
[0181]接下來,代碼轉(zhuǎn)換部分14順序地讀取已經(jīng)作為目標(biāo)的源文件以產(chǎn)生文件代碼表21 (步驟S30)。這樣做,可以指出當(dāng)前關(guān)注的源文件的文件代碼。
[0182]在讀取了新的源文件之后,代碼轉(zhuǎn)換部分14從第一行順序地讀取指令(步驟S40)。甚至當(dāng)在兩行或多行中描述一個(gè)指令時(shí),也逐行地讀取該指令。即,可以讀取指令而不受指令的格式或語(yǔ)法的影響。此外,一行或兩行中的差別可能不會(huì)變?yōu)橹赋鲥e(cuò)誤原因的重要故障。因此,可以統(tǒng)一地讀取在兩行或多行中描述的整個(gè)單個(gè)指令。
[0183]接下來,代碼轉(zhuǎn)換部分14確定createCodeO函數(shù)是否被包括在讀取的行中(步驟S50)。createCode O函數(shù)的自變量可以具有任意值或者可以沒有。
[0184]當(dāng)確定不包括createCode O函數(shù)時(shí)(在步驟S50中的否),處理回到步驟S40。
[0185]當(dāng)確定包括createCode O函數(shù)時(shí)(在步驟S50中的是),代碼轉(zhuǎn)換部分14產(chǎn)生錯(cuò)誤代碼(S60)。在產(chǎn)生錯(cuò)誤代碼時(shí),使用程序20的版本、文件代碼和行號(hào)??梢蕴鎿Q或者可以不替換上述的任意一個(gè)字符。代碼轉(zhuǎn)換部分14獲取由開發(fā)者在程序產(chǎn)生裝置500中輸入的程序20的版本,并提取最后兩位。接下來,代碼轉(zhuǎn)換部分14從文件代碼表21讀取文件代碼,該文件代碼對(duì)應(yīng)于當(dāng)前關(guān)注的文件的文件名。接下來,當(dāng)前讀取的行被用于作為相同的行號(hào),并且被轉(zhuǎn)換為十六進(jìn)制。此外,如果存在createCode O函數(shù)的自變量,則指定該任意字符。此外,發(fā)生了錯(cuò)誤的處理的行通常是在當(dāng)前讀取的行之前的幾行。因此,可以確定通過從當(dāng)前讀取的行減去幾行而獲得的值作為行號(hào),并且被轉(zhuǎn)換為十六進(jìn)制。然后,通過在各個(gè)預(yù)定位置處布置字符串和連字符而產(chǎn)生錯(cuò)誤代碼。
[0186]代碼轉(zhuǎn)換部分14用產(chǎn)生的錯(cuò)誤代碼替換createCodeO函數(shù)(步驟S70)。
[0187]然后,代碼轉(zhuǎn)換部分14確定處理是否進(jìn)行到一個(gè)源文件的最后一行(步驟S80)。當(dāng)確定處理沒有進(jìn)行到最后一行時(shí)(步驟S80中的否),該處理回到步驟S40。當(dāng)確定處理進(jìn)行到最后一行時(shí)(步驟S80中的是),處理來到步驟S90。
[0188]當(dāng)處理進(jìn)行到最后一行時(shí),代碼轉(zhuǎn)換部分14 (從文件代碼表21中的所有源文件中)確定是否存在要對(duì)其進(jìn)行構(gòu)建以及還沒有對(duì)其進(jìn)行處理的任何文件(步驟S90)。
[0189]當(dāng)確定存在要對(duì)其進(jìn)行構(gòu)建并且還沒有對(duì)其進(jìn)行處理的這樣的文件時(shí)(步驟S90中的是),處理回到步驟S30以重復(fù)從步驟S30起的處理。當(dāng)確定沒有要對(duì)其進(jìn)行構(gòu)建并且還沒有對(duì)其進(jìn)行處理的文件時(shí)(步驟S90中的否),構(gòu)建部分組合并壓縮這些文件(步驟是100)。更具體地,編譯部分12編譯要被編譯的源文件,并且鏈接部分15進(jìn)行鏈接并存儲(chǔ)在特定目錄中。此外,構(gòu)建工具511將要被復(fù)制的源文件僅復(fù)制到特定目錄。最后,壓縮部分16組合并壓縮在由構(gòu)建文件指定的目錄下的多個(gè)文件。這樣做,產(chǎn)生作為執(zhí)行文件的程序20。
[0190]產(chǎn)生的程序20經(jīng)由記錄介質(zhì)或網(wǎng)絡(luò)被安裝到程序執(zhí)行裝置中。在電力接通時(shí)從服務(wù)器400將程序20下載到通信終端300。
[0191]圖16示出例示了當(dāng)程序執(zhí)行裝置執(zhí)行程序20時(shí)顯示錯(cuò)誤消息的處理的流程圖的例子。
[0192]程序執(zhí)行裝置按照地址的順序執(zhí)行程序20而不調(diào)用任何分支或子例程(步驟S110)。
[0193]然后,確定是否在例如if語(yǔ)句中檢測(cè)到錯(cuò)誤(步驟S120)。當(dāng)錯(cuò)誤檢測(cè)部分18確定檢測(cè)到錯(cuò)誤時(shí)(步驟S120中的是),錯(cuò)誤消息顯示部分19產(chǎn)生錯(cuò)誤消息(步驟S130)。具體地,從 RAM203、103、HDD204 和閃存 104 讀取與 errorTitlel (即 PrintErrorDialog 函數(shù)的第一自變量)相關(guān)聯(lián)并且一起存儲(chǔ)的字符串。此外,從RAM203、103、HDD204和閃存104讀取例如是“0511-00B-0”的三個(gè)自變量。當(dāng)開發(fā)者產(chǎn)生源文件時(shí),描述1-3所位于的位置被指定為PrintErrorDialog函數(shù)的屬性。
[0194]錯(cuò)誤消息顯示部分19在顯示器208、120等上顯示錯(cuò)誤消息(步驟S140)。這樣做,如圖2所示,其中發(fā)生錯(cuò)誤的行號(hào)顯示在錯(cuò)誤代碼中,以便用戶可以向支持中心報(bào)告錯(cuò)誤代碼。當(dāng)用戶按下OK按鈕時(shí),程序執(zhí)行裝置從PrintErrorDialog函數(shù)中的下一指令恢復(fù)處理。
[0195]支持中心或開發(fā)部門參考版本管理表,并且指出與錯(cuò)誤代碼中包括的程序20的版本對(duì)應(yīng)的文件的版本。接下來,支持中心或開發(fā)部門參考文件代碼表21,并且指出與錯(cuò)誤代碼中包括的文件代碼對(duì)應(yīng)的文件名。這樣做,可以指出其中發(fā)生錯(cuò)誤的源文件以及該源文件的版本。支持中心或開發(fā)部門基于錯(cuò)誤代碼中包括的行號(hào)指出在源文件中的哪里發(fā)生錯(cuò)誤。因此,可以指出(精確定位)發(fā)生錯(cuò)誤的指令。
[0196]實(shí)施例2
[0197]在此實(shí)施例中,描述了顯示與實(shí)施例1中的不同的錯(cuò)誤代碼的程序執(zhí)行裝置和程序產(chǎn)生裝置。
[0198]錯(cuò)誤代碼
[0199]圖17示出此實(shí)施例中的錯(cuò)誤代碼的例子。圖17中的錯(cuò)誤代碼具有總共十二位。從左邊給出對(duì)于這些位的位編號(hào)并對(duì)其描述。在此實(shí)施例中,特征是使用錯(cuò)誤代碼的1-4位中的四個(gè)字符給出錯(cuò)誤號(hào)。
[0200]在此,錯(cuò)誤號(hào)指唯一地(或統(tǒng)一地)標(biāo)識(shí)錯(cuò)誤內(nèi)容的標(biāo)識(shí)信息。在實(shí)施例1中的錯(cuò)誤代碼中,假設(shè)開發(fā)者參考源代碼來分析錯(cuò)誤代碼,并且用戶向支持中心報(bào)告消息和錯(cuò)誤代碼。因此,如果消息或錯(cuò)誤代碼長(zhǎng),或者如果存在類似其他的一些消息和錯(cuò)誤代碼,則可能不能正確地報(bào)告消息或錯(cuò)誤代碼。
[0201]錯(cuò)誤代碼的較高的四位用于解決此問題。此外,可以通過由程序執(zhí)行裝置的制造商準(zhǔn)備和分發(fā)包括與錯(cuò)誤代碼對(duì)應(yīng)的錯(cuò)誤內(nèi)容以及解決措施的手冊(cè)或者提供顯示與錯(cuò)誤代碼對(duì)應(yīng)的錯(cuò)誤內(nèi)容以及解決措施的網(wǎng)頁(yè)而使用錯(cuò)誤代碼的較高的四位。此外,可能變得能夠增加用戶可以基于錯(cuò)誤代碼的較高的四位通過參考手冊(cè)等解決程序的錯(cuò)誤的原因而不用聯(lián)系支持中心的可能性。
[0202]錯(cuò)誤代碼中的第五位的連字符是用于區(qū)分錯(cuò)誤號(hào)與其他部分的符號(hào)。為此,不總是需要該連字符,并且例如可以使用符號(hào)“_或空格“”。此外,也可以不用連字符等而描述錯(cuò)誤代碼。
[0203]第六和第七位的兩個(gè)字符與圖12的錯(cuò)誤代碼中的第一和第二位的字符相同(即程序20中的最后兩位),并且第八和第九位的字符與圖12的錯(cuò)誤代碼中的第三和第四位的字符相同(即輸出錯(cuò)誤消息的源文件的文件代碼)。
[0204]在圖17的錯(cuò)誤代碼中省略了圖12的錯(cuò)誤代碼的第五位中的連字符。這是因?yàn)?,在圖17的錯(cuò)誤代碼中,通過僅使用在第五位處的一個(gè)連字符,錯(cuò)誤號(hào)可以更清楚地與其他部分分離。類似于實(shí)施例1,除了錯(cuò)誤代碼之外的代碼(6-12位)由開發(fā)部門使用。此外,通過省略連字符,變得能夠防止錯(cuò)誤代碼的長(zhǎng)度太長(zhǎng)。
[0205]10-12位中的三個(gè)字符與圖12的錯(cuò)誤代碼中的6_8位中的錯(cuò)誤代碼相同(即源文件的行號(hào))。
[0206]此外,沒有與圖12的錯(cuò)誤代碼中的9-10位的字符對(duì)應(yīng)的字符。其原因是為了防止錯(cuò)誤代碼太長(zhǎng)。但是,可以在圖17的錯(cuò)誤代碼的13-14位中添加圖12的錯(cuò)誤代碼中的
9-10位的字符而不進(jìn)行省略。
[0207]此外,在較高的1-4位中描述錯(cuò)誤號(hào)。但是,錯(cuò)誤代碼的位置不限于較高的1-4位。描述程序20的版本以及源文件的行號(hào)的位置不限于圖17中所述的位置。錯(cuò)誤代碼的位數(shù)不限于四。對(duì)于錯(cuò)誤號(hào)可以使用少于或多于4位。
[0208]源文件的例子
[0209]圖18示出源文件的描述的例子。關(guān)于圖13和圖18之間共同的部分,僅描述主要部分。類似于實(shí)施例1,“printErrorDialog”函數(shù)是顯示錯(cuò)誤消息的函數(shù)。但是,printErrorDialog函數(shù)取兩個(gè)自變量。
[0210]第一自變量errorl (或error2)與錯(cuò)誤號(hào)表中的錯(cuò)誤號(hào)相關(guān)聯(lián)。此外,由于第一自變量和錯(cuò)誤號(hào)之間的關(guān)聯(lián)性,在實(shí)施例1中分別與第一和第二自變量相關(guān)聯(lián)的描述I和2被登記在錯(cuò)誤號(hào)表中以便與第一自變量相關(guān)聯(lián)。因此,實(shí)施例1中的第二自變量可以省略。[0211]第三自變量createCode O將被錯(cuò)誤代碼替換。此外,在此實(shí)施例中,錯(cuò)誤代碼不包括任意的一個(gè)字符。因此,不使用createCodeO的自變量。
[0212]圖19示出其中第一自變量與錯(cuò)誤號(hào)以及描述I和2相關(guān)聯(lián)的錯(cuò)誤號(hào)表31的例子。錯(cuò)誤號(hào)表31被存儲(chǔ)在例如程序產(chǎn)生裝置500的HDD508中以及程序執(zhí)行裝置的HD204、SSD105等中。錯(cuò)誤號(hào)表31包括字段“errorName (錯(cuò)誤名稱)”、“errorNumber (錯(cuò)誤號(hào))”、^errorTitle (錯(cuò)誤標(biāo)題)”和“errorMessage (錯(cuò)誤消息)”如下:
[0213]“errorName”登記將作為“printErrorDialog”函數(shù)的第一自變量的值;
[0214]“errorNumber”登記錯(cuò)誤代碼中的錯(cuò)誤號(hào);
[0215]“errorTitle”登記錯(cuò)誤名稱(錯(cuò)誤的簡(jiǎn)要內(nèi)容);以及
[0216]“errorMessage”登記錯(cuò)誤消息(錯(cuò)誤的具體內(nèi)容)。
[0217]如上所述,源文件的printErrorDialog函數(shù)的第一自變量被登記為“errorName”。此外,在描述 I 和 2 中,分別顯不 “errorTitle” 和 “errorMessage”。
[0218]代碼轉(zhuǎn)換部分14基于第一自變量參考錯(cuò)誤號(hào)表31,并讀取錯(cuò)誤號(hào)以及描述I和2。此外,代碼轉(zhuǎn)換部分14用錯(cuò)誤號(hào)以及程序20的版本、文件代碼和行號(hào)替換createCode ()。這樣做,可以用錯(cuò)誤代碼替換createCodeO。
[0219]圖20示出包括替換錯(cuò)誤代碼的源文件的例子。
[0220]如在與圖18比較時(shí)顯而易見的,用“0001-051100B”替換行11中的CreateCode O ;用“0001_051101(:” 替換行 28 中的 CreateCode O ;用“0002_0511069” 替換行 105 中的 CreateCode ()。
[0221]如上所述,用錯(cuò)誤號(hào)替換錯(cuò)誤代碼的第一到第四位。
[0222]操作過程
[0223]圖21示出例示程序產(chǎn)生裝置500產(chǎn)生錯(cuò)誤代碼的處理的流程圖的例子。圖21中的過程與圖15中的過程的不同在于添加了步驟S55。[0224]g卩,當(dāng)確定CreateCodeO函數(shù)被包括在從源文件讀出的行中時(shí)(步驟S50中的是),代碼轉(zhuǎn)換部分14參考錯(cuò)誤號(hào)表31,并指出錯(cuò)誤號(hào)(步驟S55)。即,代碼轉(zhuǎn)換部分14讀取具有CreateCode O函數(shù)作為第二自變量的printErrorDialog的第一自變量(圖18中的errorl 或 error2)。
[0225]然后,讀取其中第一自變量被登記在錯(cuò)誤號(hào)表31中的“errorName”中的記錄中的“errorNumber”。這變?yōu)殄e(cuò)誤號(hào)。此外,類似于圖15中的過程,代碼轉(zhuǎn)換部分14指出程序20的版本、文件代碼和行號(hào)。這樣做,可以產(chǎn)生圖17的錯(cuò)誤代碼。
[0226]代碼轉(zhuǎn)換部分14用產(chǎn)生的錯(cuò)誤代碼替換CreateCode O (步驟S70)。在步驟S70之后,處理以與實(shí)施例1中相同的方式進(jìn)行。
[0227]圖22示出例示當(dāng)程序執(zhí)行裝置執(zhí)行程序20時(shí)顯示錯(cuò)誤消息的處理的流程圖的例子。
[0228]程序執(zhí)行裝置按照地址的順序執(zhí)行程序20而沒有對(duì)分支或子例程的任何調(diào)用(步驟 SI 10)。
[0229]然后,確定是否檢測(cè)到在例如if語(yǔ)句中的錯(cuò)誤(步驟S120)。當(dāng)錯(cuò)誤檢測(cè)部分18確定檢測(cè)到錯(cuò)誤時(shí)(步驟S120中的是),錯(cuò)誤消息顯示部分19讀取在其中printErrorDialog函數(shù)的第一自變量被登記在“errorName”中的記錄中的“errorTitle”和“errorMessage”(步驟 S125)。
[0230]接下來,錯(cuò)誤消息顯示部分19產(chǎn)生錯(cuò)誤消息(步驟S130 )。具體地,從RAM203、103、HD204和閃存104讀取作為第二自變量的諸如“0001-051100B”的字符串。這對(duì)應(yīng)于描述3。此外,通過分別設(shè)置“errorTitle'“errorMessage”和該字符串作為描述1、2和3,產(chǎn)生錯(cuò)誤消息。當(dāng)開發(fā)者產(chǎn)生源文件時(shí),描述1、2和3的位置被指定為printErrorDialog函數(shù)的屬性。
[0231]錯(cuò)誤消息顯示部分19在顯示器208、120等上顯示錯(cuò)誤消息(步驟S140)。這樣做,包括錯(cuò)誤號(hào)的錯(cuò)誤代碼被顯示為錯(cuò)誤消息的一部分。
[0232]因此,用戶可以向支持中心報(bào)告錯(cuò)誤代碼。而且,用戶可以基于錯(cuò)誤號(hào)通過參考手冊(cè)或者網(wǎng)頁(yè)來查看錯(cuò)誤內(nèi)容以及解決措施。當(dāng)用戶按下OK按鈕時(shí),程序執(zhí)行裝置從printErrorDialog函數(shù)的下一指令恢復(fù)處理。
[0233]如上所述,根據(jù)此實(shí)施例中的程序執(zhí)行裝置和程序產(chǎn)生裝置,除了實(shí)施例1中的效果之外,用戶可能變得能夠查看錯(cuò)誤內(nèi)容和解決措施。
[0234]實(shí)施例3
[0235]在此實(shí)施例中,描述了向支持中心報(bào)告錯(cuò)誤消息的程序執(zhí)行裝置。
[0236]圖23示出錯(cuò)誤報(bào)告系統(tǒng)700的配置的例子。多個(gè)程序執(zhí)行裝置經(jīng)由網(wǎng)絡(luò)與用于支持中心中的維護(hù)的終端600通信地連接。用于支持中心中的維護(hù)的終端600的硬件配置的描述類似于信息處理裝置100的硬件配置的描述。因此,省略重復(fù)的描述。
[0237]在程序執(zhí)行裝置中,預(yù)先登記用于支持中心中的維護(hù)的終端600的IP地址。代替IP地址,可以使用統(tǒng)一資源定位符(URL)來指定用于支持中心中的維護(hù)的終端600。此外,在程序執(zhí)行裝置中,還預(yù)先登記標(biāo)識(shí)信息。標(biāo)識(shí)信息唯一地指定程序執(zhí)行裝置,并且包括數(shù)字、字母或符號(hào)或其任意組合。
[0238]在報(bào)告錯(cuò)誤消息時(shí),程序執(zhí)行裝置向支持中心發(fā)送標(biāo)識(shí)信息。[0239]用于支持中心中的維護(hù)的終端600包括與該標(biāo)識(shí)信息對(duì)應(yīng)的用戶信息。該用戶信息可以包括公司名稱、部門名稱、地址和聯(lián)系人信息。支持中心基于該標(biāo)識(shí)信息確定該程序執(zhí)行裝置的用戶,并且可以提供售后服務(wù)等。
[0240]此外,可能存在一些不愿意基于標(biāo)識(shí)信息提供用戶信息的用戶。因此,用戶可以設(shè)置程序執(zhí)行裝置,使得阻止標(biāo)識(shí)信息從程序執(zhí)行裝置的自動(dòng)發(fā)送。否則,可以允許標(biāo)識(shí)信息的自動(dòng)發(fā)送,但是用戶可以要求支持中心阻止用戶信息的登記。
[0241]此外,用于支持中心中的維護(hù)的終端600存儲(chǔ)錯(cuò)誤號(hào)表31和錯(cuò)誤詳細(xì)信息。錯(cuò)誤號(hào)表31類似于實(shí)施例2中的錯(cuò)誤號(hào)表。錯(cuò)誤詳細(xì)信息可以是比錯(cuò)誤號(hào)表31中的“errorTitle” 和 “errorMessage” 更具體的信息。
[0242]因?yàn)橛糜谥С种行闹械木S護(hù)的終端600存儲(chǔ)錯(cuò)誤號(hào)表31,所以用于支持中心中的維護(hù)的終端600可以基于從程序執(zhí)行裝置接收的錯(cuò)誤號(hào)在終端600的顯示器上顯示錯(cuò)誤消息。此外,用于維護(hù)的終端600可以基于從程序執(zhí)行裝置接收的錯(cuò)誤號(hào)在終端600的顯示器上顯示錯(cuò)誤詳細(xì)信息。此外,用于維護(hù)的終端600可以顯示程序執(zhí)行裝置的標(biāo)識(shí)信息或者程序執(zhí)行裝置的用戶信息。
[0243]因此,盡管程序執(zhí)行裝置的用戶不向支持中心報(bào)告錯(cuò)誤代碼,但是支持中心不僅可以指明錯(cuò)誤消息而且可以指明發(fā)生錯(cuò)誤的程序執(zhí)行裝置(或用戶)。此外,支持中心可以指明(精確定位)發(fā)生錯(cuò)誤的程序的指令。
[0244]圖24示出例示程序執(zhí)行裝置以及用于支持中心中的維護(hù)的終端600的操作處理的流程圖的例子。
[0245]在程序執(zhí)行裝置執(zhí)行程序時(shí),發(fā)生錯(cuò)誤(步驟S210)。如在實(shí)施例2中所述,程序執(zhí)行裝置產(chǎn)生錯(cuò)誤消息。此實(shí)施例中的程序執(zhí)行裝置將整個(gè)錯(cuò)誤消息或者至少該錯(cuò)誤消息的錯(cuò)誤代碼以及標(biāo)識(shí)信息發(fā)送到用于支持中心中的維護(hù)的終端600 (步驟S220)。
[0246]用于支持中心中的維護(hù)的終端600接收標(biāo)識(shí)信息和錯(cuò)誤代碼(步驟S230)。
[0247]用于支持中心中的維護(hù)的終端600從錯(cuò)誤代碼中提取第一到第四位的錯(cuò)誤號(hào)(步驟 S240)。
[0248]用于支持中心中的維護(hù)的終端600基于該錯(cuò)誤號(hào)參考錯(cuò)誤號(hào)表31,并且產(chǎn)生錯(cuò)誤消息,或者基于該錯(cuò)誤號(hào)讀取錯(cuò)誤詳細(xì)信息(步驟S250)。
[0249]用于支持中心中的維護(hù)的終端600在顯示器上顯示標(biāo)識(shí)信息、錯(cuò)誤消息和錯(cuò)誤詳細(xì)信息(步驟S260)。
[0250]如上所述,在此實(shí)施例中的錯(cuò)誤報(bào)告系統(tǒng)700中,程序執(zhí)行裝置發(fā)送標(biāo)識(shí)信息和錯(cuò)誤代碼,并且用于支持中心中的維護(hù)的終端600顯示該標(biāo)識(shí)信息。這樣做,變得能夠指出發(fā)生了錯(cuò)誤的程序執(zhí)行裝置。此外,顯示錯(cuò)誤消息。因此,變得能夠指出(精確定位)發(fā)生了錯(cuò)誤的程序的指令。此外,顯示錯(cuò)誤詳細(xì)信息。因此,支持中心可以指明錯(cuò)誤內(nèi)容并知道解決措施。
[0251]盡管為了完整和清楚的描述已經(jīng)關(guān)于具體實(shí)施例描述了本發(fā)明,但是所附權(quán)利要求并不因此受限而是將被解釋為包含了完全落在在此所述的基本教導(dǎo)內(nèi)的對(duì)于本領(lǐng)域技術(shù)人員可能發(fā)生的所有修改和替換構(gòu)成。
[0252]本申請(qǐng)基于2011年7月15日提交的日本專利申請(qǐng)第2011-157183號(hào)以及2012年5月15日提交的日本專利申請(qǐng)第2012-111680號(hào)并且要求它們的優(yōu)先權(quán),它們的全部?jī)?nèi)容通過引用合并于此。
【權(quán)利要求】
1.一種在程序的執(zhí)行期間檢測(cè)到故障時(shí)顯示錯(cuò)誤消息的嵌入式裝置,該嵌入式裝置包括: 中央處理單元,配置為執(zhí)行所述程序; 程序存儲(chǔ)單元,配置為存儲(chǔ)組合了多個(gè)文件的可執(zhí)行的壓縮文件,作為所述程序;故障檢測(cè)單元,配置為基于存儲(chǔ)指令的執(zhí)行結(jié)果的地址的存儲(chǔ)內(nèi)容檢測(cè)故障;以及錯(cuò)誤消息顯示單元,配置為當(dāng)所述故障檢測(cè)單元檢測(cè)到故障時(shí)在顯示設(shè)備上輸出錯(cuò)誤消息,該錯(cuò)誤消息包括所述程序的版本信息、文件的文件標(biāo)識(shí)信息以及所述文件中正被執(zhí)行的指令的行號(hào),該錯(cuò)誤消息在該指令中描述。
2.根據(jù)權(quán)利要求1的嵌入式裝置, 其中所述錯(cuò)誤消息還包括用于標(biāo)識(shí)錯(cuò)誤內(nèi)容的錯(cuò)誤號(hào)。
3.根據(jù)權(quán)利要求1或2的嵌入式裝置, 其中所述錯(cuò)誤消息顯示單元配置為從所述嵌入式裝置中包括的存儲(chǔ)器中的預(yù)定地址讀取在所述程序中描述的版本信息、所述文件標(biāo)識(shí)信息以及所述行號(hào)。
4.根據(jù)權(quán)利要求3的嵌入式裝置, 其中所述錯(cuò)誤消息顯示單元配置為從所述嵌入式裝置中包括的存儲(chǔ)器的預(yù)定地址讀取第一字符串和第二字符串,第一字符串對(duì)應(yīng)于所述程序中描述的指令的第一自變量,第二字符串對(duì)應(yīng)于所述程序中描述的指令的第二自變量。
5.根據(jù)權(quán)利要求4的嵌入式裝置, 其中第一字符串指示發(fā)生故障,第二字符串指示解決手段。
6.根據(jù)權(quán)利要求3的嵌入式裝置,還包括: 錯(cuò)誤表,其中第一字符串和第二字符串與所述程序中描述的指令的第一自變量相關(guān)聯(lián)并且一起存儲(chǔ), 其中所述錯(cuò)誤消息顯示單元配置為讀取所述錯(cuò)誤表中的與所述指令的第一自變量對(duì)應(yīng)的第一字符串和第二字符串,并將所述第一字符串和所述第二字符串布置在所述錯(cuò)誤消息中的預(yù)定位置處。
7.根據(jù)權(quán)利要求6的嵌入式裝置, 其中所述第一字符串指示錯(cuò)誤名稱,并且所述第二字符串指示錯(cuò)誤內(nèi)容。
8.根據(jù)權(quán)利要求1到7的任意一項(xiàng)的嵌入式裝置,還包括: 程序下載單元,配置為經(jīng)由網(wǎng)絡(luò)從連接的服務(wù)器下載所述程序。
9.根據(jù)權(quán)利要求2的嵌入式裝置,還包括: 發(fā)送單元,配置為向經(jīng)由網(wǎng)絡(luò)連接的信息處理裝置發(fā)送錯(cuò)誤消息和標(biāo)識(shí)信息,該錯(cuò)誤消息至少包括錯(cuò)誤號(hào),該標(biāo)識(shí)信息標(biāo)識(shí)該嵌入式裝置。
10.一種產(chǎn)生組合了多個(gè)文件的可執(zhí)行的壓縮文件的程序產(chǎn)生裝置,該程序產(chǎn)生裝置包括: 文件存儲(chǔ)單元,配置為存儲(chǔ)指定所述多個(gè)文件的文件指定信息以及要組合的文件; 版本信息接受單元,配置為接受所述程序的版本信息的輸入; 標(biāo)識(shí)表產(chǎn)生單元,配置為通過向文件指定信息中指定的多個(gè)文件添加文件標(biāo)識(shí)信息而產(chǎn)生文件標(biāo)識(shí)表;以及 符號(hào)替換單元,配置為將所述文件中描述的預(yù)定符號(hào)替換為所述版本信息接受單元接受的版本信息、登記在所述文件標(biāo)識(shí)表中的文件的文件標(biāo)識(shí)信息、以及其中描述了所述預(yù)定符號(hào)的行或者附近的行的行號(hào)。
11.一種使得嵌入式裝置執(zhí)行以下步驟的程序,該嵌入式裝置包括執(zhí)行該程序的中央處理單元以及存儲(chǔ)組合了多個(gè)文件的可執(zhí)行的壓縮文件作為所述程序的程序存儲(chǔ)單元,并且當(dāng)在程序的執(zhí)行期間檢測(cè)到故障時(shí)顯示錯(cuò)誤消息: 故障檢測(cè)步驟,基于存儲(chǔ)指令的執(zhí)行結(jié)果的地址的存儲(chǔ)內(nèi)容檢測(cè)故障;以及 錯(cuò)誤消息顯示步驟,當(dāng)所述故障檢測(cè)步驟檢測(cè)到故障時(shí)在顯示設(shè)備上輸出錯(cuò)誤消息,該錯(cuò)誤消息包括所述程序的版本信息、所述文件的文件標(biāo)識(shí)信息以及所述文件中正被執(zhí)行的指令的行號(hào),該錯(cuò)誤消息在該指令中描述。
12.一種使得程序產(chǎn)生裝置執(zhí)行以下步驟的程序,該程序產(chǎn)生裝置包括存儲(chǔ)指定多個(gè)文件的文件指定信息以及要組合的文件的文件存儲(chǔ)單元,并通過組合所述多個(gè)文件產(chǎn)生壓縮文件: 版本信息接受步驟,接受程序的版本信息的輸入; 標(biāo)識(shí)表產(chǎn)生步驟,通過向文件指定信息指定的多個(gè)文件添加文件標(biāo)識(shí)信息而產(chǎn)生文件標(biāo)識(shí)表;以及 符號(hào)替換步驟,將所述文件中描述的預(yù)定符號(hào)替換為在所述版本信息接受步驟中接受的版本信息、登記在所述文件標(biāo)識(shí)表中的文件的文件標(biāo)識(shí)信息、以及其中描述了所述預(yù)定符號(hào)的行或者附近的行的行號(hào)。
13.由根據(jù)權(quán)利要求10的程序產(chǎn)生裝置產(chǎn)生的程序, 其中所述程序的版本信息、 標(biāo)識(shí)所述文件的文件標(biāo)識(shí)信息以及所述文件中正被執(zhí)行的指令的行號(hào)在組合了多個(gè)文件的壓縮文件中描述。
【文檔編號(hào)】G06F11/32GK103649924SQ201280034319
【公開日】2014年3月19日 申請(qǐng)日期:2012年7月4日 優(yōu)先權(quán)日:2011年7月15日
【發(fā)明者】大和田俊和 申請(qǐng)人:株式會(huì)社理光