新四季網

嵌入式裝置、程序產生裝置和程序的製作方法

2023-05-18 23:31:41

嵌入式裝置、程序產生裝置和程序的製作方法
【專利摘要】在程序的執行期間檢測到故障時顯示錯誤消息的嵌入式裝置包括:中央處理單元,執行該程序;程序存儲單元,存儲可執行的壓縮文件,在該可執行的壓縮文件中多個文件被組合為該程序;故障檢測單元,基於存儲了指令的執行結果的地址的存儲內容檢測故障;以及錯誤消息顯示單元,當所述故障檢測單元檢測到故障時在顯示設備上輸出錯誤消息,該錯誤消息包括該程序的版本信息、該文件的文件標識信息以及在該文件中正執行的指令的行號,該錯誤消息在該指令中描述。
【專利說明】嵌入式裝置、程序產生裝置和程序
【技術領域】
[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日
【發明者】大和田俊和 申請人:株式會社理光

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀