TWI361978B - Method for debugging a computer system - Google Patents
Method for debugging a computer system Download PDFInfo
- Publication number
- TWI361978B TWI361978B TW093124792A TW93124792A TWI361978B TW I361978 B TWI361978 B TW I361978B TW 093124792 A TW093124792 A TW 093124792A TW 93124792 A TW93124792 A TW 93124792A TW I361978 B TWI361978 B TW I361978B
- Authority
- TW
- Taiwan
- Prior art keywords
- program
- instructions
- instruction
- debug
- current instruction
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
九、發明說明: 【韻> 明戶斤屬之_挂^軒々貝】 發明的拮術領域 本發行係有關-種唯讀記憶體内嵌式電腦除錯技術。 ί:先前技術2 發明的枯術背景 電腦中的處㈣可運作指令,但不會指㈣部到底發生 了什麼事’除了I/O接腳上的外部信號之夕卜如果處理器適 切地運作麟,可魏想處理財暫存㈣快取記憶體中 的内容但常常是未知的,除非提出—項特定請求要閱讀該 種資訊。因為處理n的内部功能是有效地隱藏起來的,如 果在執行程式的過程中發生硬體或軟體錯誤的話,便會很 難或很耗時地判定是否該項錯誤的起因是在處理器中、在 電腦的某些其他部件中、或者在程式指令中。 電腦程式執行追蹤功能是—魏有用的技術,其可用來 找出電腦效能的硬體與軟體錯誤,藉著產生、或'、留存〃已 執行程式齡的'、痕跡"。該程式執行痕跡亦可記錄某些事 的發生即所明的事件式概要分析(pr〇f丨丨丨ng)技術。程式 執仃痕跡基本上是已執行指令的—列表,稱為次常式以及 取資;原#時也包括其結果。例如,此項技術可以用 ;=¾的開機自我測試程序(p〇ST)中以發現處理器、韋刃 =或系統板上效能的錯誤。亦可在pQST^後使用此項技 v X發現電腦中運作程式或週邊裝置巾的錯誤。 程式執fr追縱的某些變化是使用邏輯分析器、目標探測 1361978 (itp)或電路内模擬器(ICe)來觀看已執行指令或產生該程 式執行痕跡。各個該等裝置具有各種不同的優點或用= 然而,除了該等裝置的成本之外,它們亦有限制。、。 邏輯分析器將監視電腦内的信號,例如匯流排、處理器 5之I/O接腳、或電财另—固部件上的信號。邏輯分析器: 在任何既定時刻留存信號的狀態,且可留存信號痕跡:記 錄一段時間中信號狀態的改變。然而,邏輯分析器並無L 控制電腦或發布命令以取得特定的資料。因此,邏輯八析 器的一項重大限制便是已留存痕跡必須仰賴受監視之處理 10器或其他部件的外部信號。處理器的内部工作狀況,例如 暫存器與快取記憶體中的狀態,仍維持為隱藏的。因:, 當致能處理器的内部快取功能時,並無法留存許多护人 .此外,必須要進行相當程度的手動轉譯以及過濾動;二便 使已留存信號資料能與實際執行的指令連結在一起。 15 爪或肛可在硬體/軟體發展過㈣將致能f腦、處理 器或程式的除錯功能,不僅是藉著監視監視1/0接腳或匯流 排信號,亦可藉著控制處理器、匯流排或其所連接的其他 部件。因此,ITP或ICE不僅是在所欲部件(例如處理器)以 及電路板之間進行仲裁工作以從該部件攔戴及/或感測到 20某些或全部的信號,ITP或ICE亦可對該等部件發布命令。 例如,ITP或ICE可以向處理器的暫存器索取資料,除了顯 示出I/O接卿上信號的目前狀態之外。然而,ITP或ICE並不 能存取快取記憶體,且較不昂貴的ΓΓΡ或ICE並不能留存已 執行指令的痕跡。ITP或ICE可以用來手動地步測各個指 6 1361978 令,但此程序是相當緩慢的。此外,某些ICE具有某些痕跡 留存功能,但僅會溢出ICE正進行監視的—特定匯流排,因 此ICE僅能留存匯流排的活動。 各個4等裝置(邏輯分析器、ITP以及ICE)係使用於實驗 5至设定内。換言之,在製造商的發展計畫下,它們可用來 處理電腦、電腦部件與程式中的錯誤,或可報告該領域中 的錯誤且由消費者送回報告。因為邏輯分析器、ιτρ以及ice 的成本以及大小的關係,該等裝置幾乎無法遠離實驗室而 a又疋以分析該領域中的電腦、部件或程式。 為了觀看處理器快取記憶體中的内容以及其他内部工 乍月兄〔將研發出積體電路晶片&特別外合("bond-out") 版。該外合晶片類似其積體電路的標準版,但具有特殊接 腳,且有時具有完整匯流排,此可以在特別外部外合介面 上取付内部信號。然而,該等外合特徵佔用了珍貴的空 Μ間,並且會影響到積體電%的運作。此外,需要特殊裝置 =程式來解碼特別外合介面上備置的信號以予該等信 號意義。 用以監視處理器之内部功能的另一項技術包含處理器 之積體電路中的'片上痕跡快取記憶體"以及支援電路。 2〇在處理器的運作過程中,痕跡資訊係留存在晶片上痕跡快 取記憶體上。此後,可以下載並且分析所留存的資訊。然 而’此項技術會佔用積體電路中的寶貴空間。 另一項分析目標電腦效能的技術,其未必包含額外裝置 (例如邏輯分析器、ITP以及ICE)或額外的晶片上電路,為、'傀 7 1361978 儡(instrumented)來源碼〃。在此項技術中,可執行的''標鐵 述句〃將被插入到來源碼的各種不同分支與位置中,夢此" 整合與重組(instrumenting)"該來源碼。在已經彙編且連钟 该來源碼之後,將執行標籤述句以及剩下的來源碼。因為 執行了各個標籤述句,它將進行由分析裴置檢測或者記錄 在目標電腦中以供未來檢查的一項運作。例如,各個標籤 述句可將一數值寫入到不同的位址中,以使該位址的内容 能提供指出已執行哪些標籤述句且呈何種順序的—項护 示。此軟體的大致流程因此由位址的内容來表示。 10 C發明内容】 的概專說明 根據本發明的一特定實施例,一種用以對電腦系 的方法包含初始化該電腦系統中的一程序,該程序包=鳍 15 7,開啟一項除錯程式,其係嵌入在該電腦系統的^ 執行該指令的至少一部份;以及該除錯程式係在該已’ 指令的至少一部份上運作。 執行 20 根據本發明的另一個實施例,一種電腦系統包含一卢 器,連接至該處理器的一唯讀記憶體(R〇M);具有叫里 •亥處理器執行之指令的一目標程序;以及一除錯程式由 係嵌入在該ROM中且能夠由該處理器來執行以運作二’其 程序之該指令的至少一部份。 Λ目榡 出 第1圖為一方塊圖,其根據本發明的—實施例展示 8 1361978 種電腦除錯系統。 第2圖為一方塊圖,其根據本發明的一實施例展示出一 種目標電腦系統,該目標電腦系統可包含在第1圖的電腦除 錯系統中。 5 第3圖為一簡化流程圖,其根據本發明的一實施例展示 出一種通用程序,其係用以對第2圖之目標電腦系統中的一 程序進行除錯動作。 第4圖為一簡化流程圖,其根據本發明的一實施例展示 出一種通用程序,其係用以對第2圖之目標電腦系統中一程 10 序的至少一部份留存連續的痕跡。 第5圖為一簡化流程圖,其根據本發明的一實施例展示 出一種通用程序,其係用以對第2圖之目標電腦系統中一程 序的至少一部份留存單一步驟痕跡。 第6圖為一簡化流程圖,其根據本發明的一實施例展示 15 出一種通用程序,其係用以執行第2圖之目標電腦系統中一 程序的至少一部份,而不需留存已執行部份的痕跡。 I:實施方式3 較佳實施例的詳細說明 包含本發明一實施例的一種電腦除錯系統100將展示於 20 第1圖中。電腦除錯系統100大致上包括目標電腦102與監 視系統104。目標電腦102較佳地為一般用途X86處理器式 電腦系統,或者其硬體及/或軟體目前正研發出來及/或能 進行除錯的任何其他適當電腦系統。監視系統1 〇 4亦較佳地 為適當的一般用途電腦系統。 9 1361978 山目標電腦102包括用以對硬體及/或軟體除錯的r〇m内 肷式除錯程式106,例如目標程序108以及目標程序1〇8可 運作的任何硬t除錯程式1()6為咖内嵌式的,因此除錯 程式106可在開機過程rb〇〇t")、開機自我測試(p〇s丁)程 5序、以及任何其他所欲時間的適當時點開啟。因此,目^ 長序108可為p錢料以及在目標電腦1Q2巾運作的任何其 他程序。換言之,在開啟除錯程式1〇6以及在完成開機㈣ 之後而開啟的任何其他程序之後,除錯程式1〇6可以用來對 開機程序的任何部份除錯。在一特定實施例中,開機程序 10較佳地僅進行其最小部分以使除錯程式1〇6能在開啟除錯 程式106之前運作,而使開機程序能儘可能地受限於除錯^ 式106 »此外’目標電腦1〇2亦較佳地包括用以與監視系統 104進行通訊的終端機110(例如但不限於ντ 1〇〇終端機 如此-來,可以快速地傳輸除錯程式1〇6所產生的任何資料 I5到監視系統104,而不是利用目標電腦⑽中的資源來儲存 與官理貧料。此外’如果儲存在目標電腦1〇2中的話,可能 會因為目標電腦102的當機而遺失該資料。 b 監視系統104較佳地包括至少充足的硬體及/或軟體以 協助除錯程式106。該種硬體與軟體較佳地包括铁端機 π in、儲存裝置114、資料管理程式116以及用以控制除錯 程式106的選擇性資料(控制資料118)。終端機112(例如但 不限於ντιοο終端機)將與目標電腦1〇2進行通訊以接收由 除錯程式106產线資料4料管理程式116將讀取透過終 端機112而輸入的資料,且把該資料儲存在儲存裝置114 10 1361978 中。控制資料118較佳地包括透過終端機112傳輸到目標電 腦102以協助除錯程式1〇6的檀案與資料,例如先前製備的 描述程式。因此,使用者可在控制資料土财製備—串命令 的描述程式,以便能下載且運作除錯程式1〇6。 5 在運作中,使用者較佳地連接目標電腦102與監視系統 104、設定監視系統104(例如藉著開啟資料管理程式116)、 產生任何所欲控制資料118,且隨後開啟除錯程式1〇6。在 執行目標程序108的過程中,除錯程式1〇6將較佳地開啟, 或者由目標程序108開啟,或者在開啟目標程序1〇8之前開 10啟。例如,如果目標程序為開機程序的話,那麼將較佳 地在開機程序的過程中開啟除錯程式1〇6,且由該開機程序 來開啟。一旦目標程序108與除錯程式1〇6能運轉,使用者 將較佳地對除錯程式106發布命令以運作目標程序1〇8的指 令、對使用者顯示至少某些資料,並且將該資料傳送給監 15視系統10 4。將在以下說明例示命令與運作。使用者亦較佳 地運作監視系統104以視需要地觀看、分析、操縱且搜尋資 料。 ' 根據第2圖展示的實施例,目標電腦1〇2大致地包括一個 或數個處理器120 '記憶體子系統122、ROM 124、連接蜂 20 126、由一個或數個匯流排系統130與132連接在一起的開 關128,以及其他部件。例如,根據一較特定實施例,所展 示的目標電腦102可為X86 -相容-處理器式個人電腦或伺服 器,例如具有英代爾公司之奔騰(Intel Pentium™)處理器的 電腦。處理器120將利用各種不同的内部部件來執行軟體, 11 1361978 其包括快取記憶體134與一組暫存器136,以及其他部件。 記憶體子系統12 2將提供-主要電腦記憶體以支援處理器 120。ROM 124大致上儲存開機程序138以及除錯程式 106。除錯程式1〇6大致上包括内喪式痕跡碼14〇與内嵌式 5反組譯程式i 41,以及其他功能。例如串列連接痒的連接淳 12 6將提供-項實體連結點以連接至監視系統丨q 4。例如目 標電腦10 2之主機板上雙行直插式開關的開關i 2 8將實體地 致能除錯程式106並且使其無效。 根據一特定實施例,每當開機程序138判定出開關128 10已經設定為可致能除錯程式106時’開機程序138較佳地開 啟除錯程式106,但當該開關並未設定為可致能除錯程式 106日^,便不開啟除錯程式1〇6 ^如此一來,在使用者開啟 或運作目標電腦102之前’使用者可選擇是否要使用除錯程 式106。如果選擇了的話,那麼在開機程序138讀取開關128 15的狀態之後,將在開機程序138的過程中開啟除錯程式 106。開機程序138隨後將停止,且將較佳地對使用者提出 一項命令提示字元。使用者隨後可輸入命令(如以下所述) 以控制除錯程式106的運作。 根據另一個特定實施例,在目標電腦1〇2已經開機且準 20備好要執行其他程式來作為目標程沣1〇8(第1圖)時,開關 128可致能除錯程式1〇6。因此,可在任何時刻設定該開關 以便能對任何目標程序108進行除錯。 此外,除錯程式106不只可以用於實驗室設定中或目標 電腦102的最初發展中,亦可在已經研發出目標電腦102且 12 1361978 已經把製造版本提供給顧客之後,處理任何時間發生的問 題與錯誤。然而,為了有效地對顧客隱藏除錯程式1〇6,在 目標電腦102的製造版本中,可將開關128設定為使除錯程 式106無效。此外,如果監視系統1〇4為筆記型電腦的話, 5使用除錯程式便不會那麼不方便或者昂貴,因為可採用 ΓΓΡ、ICE或邏輯分析器。反之,為了回覆顧客對製造版本 所提出的問題,可以撥打一通服務電話以在顧客位置上運 作除錯程式1〇6。位於顧客位置上的一服務技術人員可以隨 後設定目標電腦1〇2之製造版本的開關128以致能除錯程式 10 1〇6、連接目標電腦1〇2(筆記型電腦)的製造版本到監視系 統104,且繼續處理目標電腦1〇2之製造版本中發生的錯誤。 如果開機程序138是目標程序1〇8的話,除錯程式1〇6將 較佳地具有開機程序138的内嵌式'、對映圖"142。開機程序 對映圖142較佳地包括至少某些標籤以及位址,其指明開機 15程序138之部件143的位置。開機程序對映圖142可致能除 錯程式10 6以拆卸開機程序13 8的特定部份並且設定開機程 序138中特定時點上的中斷點,而使用者不需知悉開機程序 138之時點部份的實際位址。 依據除錯程式106的命令提示字元,使用者可輸入的命 20 令較佳地包括但不限於以下的例示命令。例如,一項命令 (一項連續的痕跡命令)將較佳地使目標程序108的各個指 令能在一項干擾產生之後執行。各項干擾將允許除錯程式 106能拆卸(利用内嵌式反組譯程式141)且留存目前指令的 痕跡(利用内嵌式痕跡碼WO)。所留存的痕跡較佳地包括欲 13 1361978 傳輪到監視系統104以進行儲存的已拆卸指令。將因此可留 存下來所執行的每個指令,即使是處理器12〇正在運作儲存 在快取記憶體134中的指令之時。 例如,在包含X86-相容處理器之目標電腦1〇2的一項特 5定實施例中’目標程序108的中斷係因為中斷3(INT3)的中 斷點而導致。在執行目前指令之前,痕跡碼14〇較佳地接續 著目前指令而隨即在下一個指令的開端設定各個INT3中斷 點°目前指令的反組譯動作可識別出目前指令以及其長度 (例如’操作碼與運算元的位元組、字元組、資料字元(dword) ίο等)’其令痕跡碼140能判定下一個指令的開始點。目前指 令的識別動作亦能令痕跡碼140判定是否有不只一個可能 的下一個指令’例如針對為一項條件跳移的目前指令。如 此—來’可以在每個可能的下一個指令開端設定INT3中斷 點。 15 例如’將藉著複製各個下一個指令的第一位元組到一安 王6己憶體位置且隨後代替該第 一位元組寫入INT3操作碼來 °又疋各個INT3中斷點。除錯程式1〇6隨後將設定、、痕跡旗標" 以才曰出正作出連續的痕跡,並且隨後跳移到目標程序108 以允許目前指令的執行。在執行目前指令之後,將在下一 2〇個耗7的開端碰到INT3中斷點,這將使INT3處理程式進行 執仃動作。因此’在除錯程式106最初開啟之時,除錯程式 106較佳地''鈎住(hooks)〃INT3處理程式,因此INT3處理程 式將把執行動作傳輸回到除錯程式106。在透過IIMT3處理 転式而返回到除錯程式106時,前面一個下一個指令現在便 14 1361978 成為個新近的目前指令。除錯程式伽將恢復該新近目前 指令(以及任何其他先前可能的下一個指令)的第〆位元 組。除錯程式1G6將如上所料進行反組職似留存該新 近目前指令的痕跡。如果設定了指出正作出連續痕跡的痕 5跡旗‘的洁’那麼將在新近的下一個指令開端設定另一個 INT3中斷點,且如上所述地執行該新近目前指令。 另個命令可進行連續痕跡命令的大部份功能,但亦可 傳輸暫存器136的内容副本以及反組譯指令的留存痕跡到 瓜視系統104以進行儲存。在任_種狀況中’除錯程式1〇6 H)將繼續留存目標程序1〇8執行動作的痕跡,直到目標程序 108正常地结束為止或者除錯程式1〇6面臨一 λ、硬⑺邮⑴"中 斷點為止,或直到目標電腦102'、t止(hang) 〃或'、當機 (crash)為止。因此’另一個命令將較佳地允許使用者能在 目標程序108中於-個或數個所欲位址(例如一指定區段與 15距離)上設定一個或數個硬中斷點。硬中斷點將停止執行動 作且追蹤目標程序1〇8在所欲點上的留存動作並且將目標 電腦102的控制動作送回到除錯程式1〇6的命令提示字元。 此外’其他命令將較佳地清除—個或數個硬巾斷點及/或儲 存該等硬中斷點以便後續使用或重複使用。 2〇 如果目標電腦!〇2在痕跡留存過程中中止的話,目標程 序1〇8(可能為造成中止的指令)的最後執行指令便為監視 系統104之儲存體114中的最後儲存指令。因此,使用者可 以觀看留存痕跡的錢指令且可能地判定造成中止的原 因。 、 15 另一個命令將較佳地如上所述地開啟連續痕跡,但並不 留存較间階常式喚起之子常式及/或功能的痕跡。如此一 來,便不會使用寶貴的處理時間來留存已知良好子常式及/ 或功能的痕跡。反之,僅會從較高階常式留存痕跡。此痕 5跡留存動作將提供目標程序⑽執行動作的簡化概觀。 另一個命令較佳地造成痕跡留存動作以及一次執行目 標程序108的指令,因此使用者可以小心地跨入目標程序 108的執行動作以嚐試著找出錯誤的來源。例如,針對X86_ 相容-處理器式目標電腦102來說’單—步驟痕跡命令將較 1〇佳地藉著設定-ιΝΤ1旗標而使用一項中斷1(INT1)功能。當 設定了 INT1旗標之後,將在目前指令之後中斷程式的執行 動作,即使尚未在下一個指令的開始時設定一中斷點。隨 後將傳送程式執行動作到INT1處理程式,該處理程式將送 回控制到除錯程式106的命令提示字元。因此,除錯程式1〇6 15較佳地、、鉤住(h〇〇k)〃INTl處理程式以及INT3處理程式。因 此’單一步驟痕跡命令將使除錯程式1〇6在執行目前指令之 前先設定INT1旗標。在透過INT1處理程式進行送回動作 時,除錯程式106將移除INT1旗標。另一個命令可開始單 步驟痕跡,如上所述地,但於一指定位址。 20 0 另一個命令則較佳地使該目前指令能受到執行而不需 要留存痕跡。如此一來,使用者可跳過其並不感到興趣的 召存指令痕跡動作。 另一個命令將較佳地使目標程序108能受到執行而不會 產生中斷,直到目標程序108終止為止。另一個命令則較佳 16 1361978 地使目標程序108的未中斷執行動作能在指定位址或指令 上開始。另一個命令較佳地允許未中斷執行動作僅進行到 一指定中斷點,其上連續痕跡將開始或者將送回控制動作 到除錯程式106的命令提示字元。因此,使用者可一起跳過 5 追縱目標程序108的某些部份。 另一個命令將較佳地使暫存器136的内容能對使用者顯 示出來及/或傳輸到監視系統104以進行儲存。另一個命令 則較佳地使記憶體子系統12 2或快取記憶體13 4中的預設或 指定位址上之資料(呈位元組、字元組、資料字元(dw〇rd) 10等)能對使用者顯示出來及/或傳輸到監視系統1〇4以進行 儲存。另一個命令將較佳地使暫存器i36中之一能被設定為 一個指定的所欲數值。另一個命令則較佳地使處理器工2〇 中的一旗標能所欲地被設定或者不設定。另一個命令較佳 地使記憶體子系統12 2或快取記憶體i 3 4中的一個指定位址 15 (呈位元組、字元組、資料字元(dword)等)能被設定為一個 指定的所欲數值。其他命令則較佳地使資料(呈位元組、字 元組、資料字元(dword)等)能從目標電腦1〇2的指定連接埠 讀出或對其寫入。另一個命令則較佳地使匯流排暫存器(屬 於匯流排系統130或132中之—)能對使用者顯示出來及/或 20傳輸到監視系統以進行儲存。另一個命令則較佳地使記 憶體子系統122中§己憶體模組的spd(序列出現偵測、ser-|a| presence detect)資料能對使用者顯示出來及/或傳輸到監 視系統104以進行儲存。 另一個命令將較佳地在目標程序1〇8中的一預設或指定 17 1361978 位址上反組譯一項指令,以使使用者能觀看並不為目前指 令的其他指令。另—個命令則較佳地使一反組譯指令能組 合起來且儲存在目標程序1〇8的預設或指定位址上,以令使 用者能嘴試不同指令來確認是否不同的指令能修復一項錯 5 誤。 另一個命令則較佳地從監視系統10 4的控制資料118 (第 1圖)下載命令描述程式到目標電腦1〇2中並且執行。另一個 命令較佳地使除錯程式1〇6終止。 上述的命令組僅為例示。實際的命令組可仰賴預期的除 10錯狀况,且包括某些或全部的上述命令、一個或數個在此 並未描述的不同命令及/或上述命令的一個或數個已修正 版本及/或組合。 在開機程序138上運作而作為目標電腦1〇2之目標程序 108以用於除錯程式1〇6的簡化例示程序144將展示於第3 15圖中。該程序144可結合其他程序,且可具備本文中已描述 或未描述的其他特徵。在開啟除錯程式1〇6之前的某個時點 中,開機程序138可以將ROM 124的内容複製到記憶體子系 統122中’以使開機程序138以及ROM 124中備置的任何其 他程序能更快速地從記憶體子系統122來進行運作^ R〇M 2〇内容的副本稱為影子(shadow)",其隨後往往將受到 寫入保護以避免毀損。然而,除錯程式106可能必須寫入中 斷點到開機程序13 8中以便留存開機程序13 8執行動作的痕 跡,或以便令斷開機程序138的執行動作以檢視或修正暫存 器136或記憶體子系統122的内容。因此,在程序144開妒 18 時(於步驟146),將在步驟148中使_影子的寫入保 效。在開機程序138開啟除錯程式106之前,將步驟15〇 中反組譯職程序138的目前指令。亦將㈣地反組譯目前 指令的痕跡留存且對使用者顯示出來(步驟15〇)。痕跡^ 5亦可包括傳輸目前指令到監視系統1〇4中以進行儲存。暫^ 器136的内容亦是選擇性顯示及/或傳輸到監㈣統取二 進行儲存(时㈣小如果在使时輸人-連續痕跡命令 之後稱後才設定-中斷點的話,將從反組譯的目前指令判 疋且儲存下一個可能指令的距離(於步騾154)。 1〇 將對使用者顯示出命令提示字元(於步驟156),且程序 H4將等待❹者輸人—項命令,例如但不限於上述的命 •7。一旦使用者輸入一個或數個命令(於步驟156),將在步 驟158中執行該命令。如果命令是要結束除錯程式1〇6的 話,那麼程序144將在步驟160中結束。如果命令並不是要 15結束除錯程式1〇6的話,那麼在執行該命令之後,程序144 將透過A或B分別地返回到步驟15〇或156,端看在步驟156 中顯示命令提示字元且等待使用者輸入另一個命令之前, 疋否需要要在步驟150中反組譯、留存且顯示目前指令(接 著上述的步驟152與154)。 20 在步驟158中,如果要針對連續痕跡而執行命令的話, 那麼除錯程式1 〇 6將跳移到一簡化例示裎序16 2以進行展示 於第4圖中的連續痕跡。程序162可與其他程序合併並且具 備其他本文中已述或者未述的特徵。在開始進行時(於步驟 164),將在下一個可能指令的開端設定一中斷點(於步驟 19 66)較仏地以如上所述的方式且根據於步驟ΐ5钟判定且 儲存的距離。此外,因為中斷點的設定將置換下一個可能 才曰·?的第-位TL組(根據—特定實施例),可以把下一個可 月b才曰7的替代部份儲存到一安全記憶體位置中(於步驟 5 166)冑在步驟168中設定痕跡旗標。控制動作隨後將跳移 到目‘私序108的目前指令以允許在步驟17〇中執行目前指 令。在執行目前指令之後,在步驟172中,將在下一個指令 的開端遇見中斷點(於步驟166中設定),其現在為一新近目 則心令。根據-特實施例,中斷點將對ΙΝΤ3處理程式啤 10叫’其肋控制動作送回·到除錯程式1〇6。控制動作將跳到 步驟174 ’其上將恢復已經藉著在步驟166中設定該中斷點 來置換下一個指令的部份(現在為新近的目前指令)。 在乂驟156中,如果使用者已在步驟170中剛執行指令 之後(如步驟176中判定的)設定了一硬中斷點的話,那麼在 15步驟156中顯不命令提示字元且等待使用者輸入另一個命 7之刖控制動作將透過Β而返回到步驟150以反組譯、留 存且顯不新近的目前指令(接著上述的步驟⑸與⑸)。否 則,如果在步驟176中並未狀出有硬中斷點的話 ,那麼將 反組澤、留存且顯示新近的目前指令(步驟178)。暫存器136 20的内合亦疋選擇性顯示及/或傳輪到監視系統1〇4以進行儲 存(於步驟180)。將從反組譯的新近目前指令判定且儲存新 近的下個可能指令的距離(於步驟182)。如果設定了痕跡 旗才不的居’即如所判定地指出正作出連續的痕跡(於步驟 184)那麼控制動作將返回到步驟166以設定下-個中斷 20 1361978 點’如從儲存在步驟182之距離所判定地。否則,控制動作 將透過A返回到步驟156以顯示命令提示字元且等待使用者 輸入另~個命令。將在步驟166至184中重複進行連續的痕 跡,直到遇到一硬中斷點為止(步驟176)或者目標程序1〇8 5終止或當機為止。 如果在步驟158中是針對單一步驟痕跡命令而執行命令 的5舌’那麼除錯程式106將跳移到簡化的例示程序186以進 行展示於第5圖的單一步驟痕跡。程序186可與其他程序合 併且可具備本文中已述或未述的其他特徵。根據一特定實 1〇施例’在開始時(步驟188),將在步驟190中設定INT1旗標。 控制動作隨後將跳移到目標程序108以在步驟192中執行目 岫指令。在執行目前指令之後,INT1旗標將造成一項中斷, 將把控制動作傳輸到INT1處理程式(於步驟194),將把控制 動作傳回到程序186。隨後將移除INT1旗標(於步驟196), 15因此控制動作將不會持續返回到INT1處理程式。反之,在 步驟156中顯示命令提示字元且等待使用者輸入另一個命 令之刖,控制動作將透過B返回到步驟150以反組譯、留存 且顯示下—個指令為新近的目前指令(接著上述的步驟152 與154)。如果使用者在步驟156中繼續輸入單一步驟痕跡命 20令的話,那麼程序186將藉著一次追蹤且執行一步驟來重複 進行。 如果在步驟158中執行的命令是要執行目標程序1〇8的 所欲部份而不需要痕跡留存的話,那麼控制動作將跳移(步 驟198)以執行目標程序1〇8中所欲部份的指令,如由第6圖 21 1361978 之簡化例示程序200所展示地。可繼續執行目標程序i〇8的 所欲部份,直到目標程序終止或當機為止。然而,在已 經執行目標程序108的所欲部份之後,如果使用者亦在步驟 156中設定一硬中斷點以將控制動作送回到除錯程式106的 5 話,那麼便會在步驟202中碰到硬中斷點。硬中斷點的設定 動作(步驟156)較佳地是在接續著目標程序1〇8的所欲部份 之後,以INT3操作碼來置換下一個指令的第一位元組。因 此,將傳遞控制動作到INT3處理程式,其將透過c送回控制 動作到第4圖中程序162的步驟174。因此,將在步驟174中 10恢復下一個指令的第一位元組。在步驟176,將遇見硬中斷 點,因此在步驟156中顯示命令提示字元且等待使用者輸入 另—個命令之前,程式碼將透過B分支到程序144(第3圖) 的步驟150以反組譯、留存且顯示下一個指令作為新近的目 則指令(接著上述的步驟152與154)。 15 【圖式簡單說明】 第1圖為一方塊圖’其根據本發明的一實施例展示出一 種電腦除錯系統。 第2圖為—方塊圖,其根據本發明的一實施例展示出一 目標電腦系統,該目標電腦系統可包含在第1圖的電腦除 20錯系統中。 第3圖 ϋ 々Λ* 出 马—簡化流程圖,其根據本發明的一實施例展示 種通用程序,其係用以對第2圖之目標電腦系統中的一 程序進行除錯動作。 第4圖免_ 今一間化流程圖,其根據本發明的一實施例展示 22 1361978 出一種通用程序,其係用以對第2圖之目標電腦系統中一程 序的至少一部份留存連續的痕跡。 第5圖為一簡化流程圖,其根據本發明的一實施例展示 出一種通用程序,其係用以對第2圖之目標電腦系統中一程 5 序的至少一部份留存單一步驟痕跡。 第6圖為一簡化流程圖,其根據本發明的一實施例展示 出一種通用程序,其係用以執行第2圖之目標電腦系統中一 程序的至少一部份,而不需留存已執行部份的痕跡。 【主要元件符號說明】 100 電腦除錯系統 130 匯流排系統 102 目標電腦 132 匯流排系統 104 監視系統 134 快取記憶體 106 ROM内嵌式除錯程式 136 暫存器 108 目標程序 138 開機程序 110 終端機 140 内嵌·式痕跡碼 112 終端機 141 内嵌式反組譯程式 114 儲存裝置 142 開機程序對映圖 116 資料管理程式 143 部件 118 控制資料 144 程序 120 處理器 162 程序 122 記憶體子系統 186 程序 124 ROM 200 程序 126 連接埠 146〜160、164〜184 步驟 128 開關 188〜196、198〜202 步驟 23
Claims (1)
1361978 P年p月vf日修正本 I第93124792號申請案修正本 100.10.ΞΙ1 十、申請專利範圍: 1. 一種用以對電腦系統進行除錯動作的方法,其包含: 啟始該電腦系統中的一程序,該程序包括多個指令 且在該電腦系統之一通用處理器上運行; 5 開啟嵌入在該電腦系統之ROM中的一除錯程式,該 除錯程式在該通用處理器上運行; 10 藉由該通用處理器執行該等指令的至少一部份; 藉著在一第一斷點上停止該等指令的執行而中斷 該等指令之執行動作,以便該除錯程式在該等已執行指 令的至少一部份上運作; 該除錯程式反組譯該等指令中的一目前指令; 判定該目前指令的長度,而該目前指令的長度指出 該等指令中之下一個指令的一啟動點; 15 該除錯程式在該下一個指令的該啟動點上設定該 等指令中的一第二斷點;以及 繼續該等指令的執行動作。 2. 如申請專利範圍第1項之方法,其另包含: 該除錯程式留存該等已執行指令之該至少一部份的一 痕跡。 3·如申請專利範圍第2項之方法,其中: 該電腦系統包括連接至一監視系統的一連接埠; 且該方法另包含: 透過該連接埠輸出已留存痕跡到該監視系統。 24 20 1361978 第93124792號申請案修正本 100.10.25. 4. 如申請專利範圍第1項之方法,其中: 該程序包含一開機程序; 該等指令包含儲存在該電腦系統之RO Μ中的開機指 令;以及 5 該除錯程式係從該開機程序内開啟。 5. 如申請專利範圍第1項之方法,其另包含: 使該等指令的執行動作在一項目前指令上中斷; 該除錯程式係藉著反組譯該目前指令而對該目前指令 運作;以及 10 執行該目前指令。 6. 如申請專利範圍第5項之方法,其另包含: 在執行該目前指令之前,判定該等指令之下一個指令的 位置;以及 在執行該目前指令之後,使該等指令的執行動作在該下 15 一個指令上中斷。 7. 如申請專利範圍第1項之方法,其另包含: 設定該電腦系統中的一開關;以及 響應於檢測該已設定開關的動作而開啟該除錯程式。 8. 如申請專利範圍第1項之方法,其另包含: 20 根據該程序包含於該除錯程式中之一對映圖所指定的 位置來設定該程序中的一斷點。 25
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/780,967 US7404178B2 (en) | 2004-02-18 | 2004-02-18 | ROM-embedded debugging of computer |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200528978A TW200528978A (en) | 2005-09-01 |
TWI361978B true TWI361978B (en) | 2012-04-11 |
Family
ID=34838654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093124792A TWI361978B (en) | 2004-02-18 | 2004-08-18 | Method for debugging a computer system |
Country Status (2)
Country | Link |
---|---|
US (1) | US7404178B2 (zh) |
TW (1) | TWI361978B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9038070B2 (en) * | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
US7584006B2 (en) * | 2004-12-20 | 2009-09-01 | Corsair Memory | Managing memory modules |
US7577876B2 (en) * | 2005-06-28 | 2009-08-18 | Intel Corporation | Debug system for data tracking |
CN1952909A (zh) * | 2005-10-21 | 2007-04-25 | 鸿富锦精密工业(深圳)有限公司 | 电脑报错方法和系统 |
US7332929B1 (en) | 2006-03-03 | 2008-02-19 | Azul Systems, Inc. | Wide-scan on-chip logic analyzer with global trigger and interleaved SRAM capture buffers |
US7788543B2 (en) * | 2006-03-22 | 2010-08-31 | Cisco Technology, Inc. | Methods and systems for generating and storing computer program execution trace data |
JP2008071227A (ja) * | 2006-09-15 | 2008-03-27 | Nec Electronics Corp | 半導体集積回路 |
KR100825786B1 (ko) * | 2006-10-26 | 2008-04-29 | 삼성전자주식회사 | 메모리 카드 및 메모리 카드의 디버깅 방법 |
US8504993B2 (en) * | 2006-12-29 | 2013-08-06 | Intel Corporation | Virtualization of micro-code patches for probe less debug |
KR101019209B1 (ko) * | 2007-04-25 | 2011-03-04 | 이화여자대학교 산학협력단 | 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법 |
US8239839B2 (en) * | 2007-12-21 | 2012-08-07 | Sap Ag | Asynchrony debugging using web services interface |
US8572579B2 (en) * | 2010-08-19 | 2013-10-29 | Oracle International Corporation | Break on next called function or method in java debugger agent |
US9424165B2 (en) | 2013-03-14 | 2016-08-23 | Applied Micro Circuits Corporation | Debugging processor hang situations using an external pin |
US9268627B2 (en) | 2013-03-14 | 2016-02-23 | Applied Micro Circuits Corporation | Processor hang detection and recovery |
US9767004B2 (en) * | 2014-06-16 | 2017-09-19 | Symantec Corporation | Dynamic call tracking method based on CPU interrupt instructions to improve disassembly quality of indirect calls |
CN105186463B (zh) * | 2015-08-31 | 2018-03-16 | 许继集团有限公司 | 一种防止智能变电站继电保护装置误操作的方法 |
US11119893B2 (en) * | 2015-09-22 | 2021-09-14 | Advanced Micro Devices, Inc. | Computing system with wireless debug code output |
US10133654B1 (en) * | 2017-02-28 | 2018-11-20 | American Megatrends, Inc. | Firmware debug trace capture |
US10372661B1 (en) | 2017-02-28 | 2019-08-06 | American Megatrends International, Llc | Firmware debug trace capture using serial peripheral interface |
US11010273B2 (en) * | 2017-06-28 | 2021-05-18 | Intel Corporation | Software condition evaluation apparatus and methods |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5321828A (en) | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
CA2101716A1 (en) * | 1992-10-29 | 1994-04-30 | Philip S. Kasten | Debugging/modifying of software systems |
DE69516634T2 (de) | 1994-11-04 | 2000-09-21 | Canon Information Systems, Inc. | Intelligente Wiederprogrammierung eines Flash-Speichers |
US5555783A (en) | 1994-12-19 | 1996-09-17 | Automatic Handling, Inc. | Core cutting machine having differently sized mandrels |
JPH0969047A (ja) | 1995-09-01 | 1997-03-11 | Sony Corp | Risc型マイクロプロセッサおよび情報処理装置 |
JPH09179752A (ja) | 1995-12-25 | 1997-07-11 | Hudson Soft Co Ltd | Romカートリッジ用デバッグ方法および装置 |
JP2795244B2 (ja) * | 1996-01-17 | 1998-09-10 | 日本電気株式会社 | プログラムデバッグシステム |
US6314530B1 (en) * | 1997-04-08 | 2001-11-06 | Advanced Micro Devices, Inc. | Processor having a trace access instruction to access on-chip trace memory |
US6167536A (en) | 1997-04-08 | 2000-12-26 | Advanced Micro Devices, Inc. | Trace cache for a microprocessor-based device |
US6154857A (en) | 1997-04-08 | 2000-11-28 | Advanced Micro Devices, Inc. | Microprocessor-based device incorporating a cache for capturing software performance profiling data |
US6651243B1 (en) | 1997-12-12 | 2003-11-18 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees |
US5881260A (en) * | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
US6567910B2 (en) * | 1998-02-13 | 2003-05-20 | Texas Instruments Incorporated | Digital signal processing unit with emulation circuitry and debug interrupt enable register indicating serviceable time-critical interrupts during real-time emulation mode |
US6311327B1 (en) | 1998-03-02 | 2001-10-30 | Applied Microsystems Corp. | Method and apparatus for analyzing software in a language-independent manner |
JP4260984B2 (ja) * | 1999-06-04 | 2009-04-30 | 株式会社東芝 | 情報処理装置および情報処理方法 |
US6560722B1 (en) * | 1999-12-30 | 2003-05-06 | Texas Instruments Incorporated | Developing and deploying real-time high-performance applications with DSPs |
US6662313B1 (en) | 2000-04-29 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | System and method for multiple cycle capture of chip state |
US6658557B1 (en) | 2000-05-25 | 2003-12-02 | Advanced Micro Devices, Inc. | Synthesizing the instruction stream executed by a microprocessor from its branch trace data |
US6658416B1 (en) | 2000-07-10 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for creating an indexed database of symbolic data for use with trace data of a computer program |
US6694489B1 (en) * | 2000-08-23 | 2004-02-17 | Triscend Corporation | Test interface for a configurable system on-chip |
US20020065646A1 (en) * | 2000-09-11 | 2002-05-30 | Waldie Arthur H. | Embedded debug system using an auxiliary instruction queue |
US7191445B2 (en) * | 2001-08-31 | 2007-03-13 | Texas Instruments Incorporated | Method using embedded real-time analysis components with corresponding real-time operating system software objects |
US20030074650A1 (en) * | 2001-10-17 | 2003-04-17 | Tankut Akgul | Debugger operating system for embedded systems |
US6834360B2 (en) * | 2001-11-16 | 2004-12-21 | International Business Machines Corporation | On-chip logic analyzer |
US6615371B2 (en) * | 2002-03-11 | 2003-09-02 | American Arium | Trace reporting method and system |
TW200513850A (en) * | 2003-10-13 | 2005-04-16 | Design Technology Inc G | Patch and expansion method of memory program for digital signal processor |
US7313729B2 (en) * | 2004-02-20 | 2007-12-25 | Winbond Electronics Corp. | Low-cost debugging system with a ROM or RAM emulator |
-
2004
- 2004-02-18 US US10/780,967 patent/US7404178B2/en not_active Expired - Fee Related
- 2004-08-18 TW TW093124792A patent/TWI361978B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20050183069A1 (en) | 2005-08-18 |
US7404178B2 (en) | 2008-07-22 |
TW200528978A (en) | 2005-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI361978B (en) | Method for debugging a computer system | |
US8180620B2 (en) | Apparatus and method for performing hardware and software co-verification testing | |
US8572577B2 (en) | Monitoring changes to data within a critical section of a threaded program | |
JP4094724B2 (ja) | ソフトウェアをデバッグする際に例外を識別するための装置および方法 | |
TWI544410B (zh) | 利用執行單步驟以進行編碼診斷 | |
WO2021057057A1 (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
US7506205B2 (en) | Debugging system and method for use with software breakpoint | |
JP2006313521A (ja) | プログラマブルデバイスのモデリング方法および装置 | |
JP2008507025A (ja) | 集積回路テスト用エミュレーション及びデバッグインターフェイス | |
JPH11110255A (ja) | ソフトウェアをデバッグするための装置および方法 | |
US6425122B1 (en) | Single stepping system and method for tightly coupled processors | |
US20060259750A1 (en) | Selectively embedding event-generating instructions | |
US10970191B2 (en) | Semiconductor device and debug method | |
JPH10333937A (ja) | マイコンシステムのデバッグ方法、デバッグ装置及びデバッグプログラムを記録した記録媒体 | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
US7886194B2 (en) | Event-generating instructions | |
Righi et al. | DEBUGGING FIRMWARE BASED ON THE UNIFIED EXTENSIBLE FIRMWARE INTERFACE. | |
Melear | Emulation techniques for microcontrollers with internal caches and multiple execution units | |
Menezes et al. | On the Extension of Xception to Support Software Fault Models | |
JP2008276683A (ja) | 試験装置 | |
KR19990076180A (ko) | 리스크 기반의 내장된 시스템에서 유효하지 않은 주소공간접근에 의한 시스템 장애 조기 발견 방법 | |
JPH0373035A (ja) | デバッグ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |