專利名稱:為任務死循環(huán)提供定位信息的方法和裝置的制作方法
技術領域:
本發(fā)明涉及嵌入式系統(tǒng)技術領域,具體涉及為任務死循環(huán)提供定位信息 的方法和裝置。
背景技術:
圖1為一個簡化的嵌入式系統(tǒng)任務運行示意圖。圖中有兩個隊列, 一個 是"睡眠任務隊列",隊列中的任務是暫時不需要執(zhí)行的,必須等待某個觸
發(fā)因素滿足條件之后,操作系統(tǒng)才會將其放入"等待運行隊列";第二個就 是"等待運行隊列",隊列中的所有任務已經(jīng)就緒,只等待操作系統(tǒng)選中自 己運行。系統(tǒng)的任務除了當前正在運行的任務,其他任務都在且僅在其中一 個隊列上。
如圖1所示,假設系統(tǒng)中有N個任務,都在排隊等待運行。假設這N 個任務都具有相同的優(yōu)先級。N個任務輪流使用系統(tǒng)中唯一的CPU資源, 任務1先運行,持續(xù)使用CPU資源,直到所需的運行時間得到滿足之后, 讓出CPU資源,然后排隊到任務N的后面,成為新的隊尾。接著任務2得 到了 CPU資源并開始運行,假設由于運行過程中需要的關鍵資源(如內存、 信號量、事件等)沒有得到滿足,因此在運行一段時間后,讓出了 CPU資 源,并排到任務l的后面,成為隊尾。如此隨著CPU時間序列的不斷進展, 隊尾任務N也會得到CPU資源并運行,當它完成所需工作,讓出CPU資源 后,系統(tǒng)中的N個任務完成了一輪循環(huán)。接著,從任務1再次開始新的一 輪循環(huán)。
在圖1中,位于CPU時間序列線下方且指向任務塊的一系列箭頭表示 時鐘中斷事件。時鐘中斷是由硬件定時觸發(fā)的硬件信號,CPU —旦檢測到這個信號,就會按照硬件設定的邏輯中止當前任務的處理,轉去執(zhí)行一段特定 的軟件代碼,這段代碼就稱為時鐘中斷處理程序。當時鐘中斷處理程序執(zhí)行 完畢,返回之后,原先被中止的任務就可以從被打斷的位置繼續(xù)執(zhí)行。
為了便于說明問題,這里選擇任務1作為描述對象,并假定其是按照如
圖2所示的邏輯設計運行。
當任務1開始運行后,執(zhí)行步驟A的"任務初始化操作,,,并且只執(zhí) 行一次。之后將在順序執(zhí)行步驟B的"判斷消息隊列非空"到步驟F的"消 息結束處理"這5步操作。如果在步驟B中判定任務1的消息隊列為"空", 則釋放CPU資源,操作系統(tǒng)會把任務1放入到睡眠任務隊列中,然后從等 待運行隊列中選擇下一個就續(xù)的任務2開始執(zhí)行。當其他任務給任務l發(fā)送 了新的消息后,操作系統(tǒng)就會將任務1從睡眠任務隊列中取出來,放入等待 運行隊列中排隊。當任務1重新開始執(zhí)行時,如果在步驟B中判定消息隊列 為"非空,,,則可以接著執(zhí)行從步驟C開始的一系列操作,包括步驟C的 "消息初始處理",步驟D的"交給模塊l處理"、步驟E的"交給模塊2 處理"和步驟F的"消息結束處理"。其中,模塊1和模塊2是當前任務處 理當前消息時可能會涉及到的功能模塊,對于不同任務、不同消息,涉及到 的功能模塊可能不同。若任務1的消息隊列里有多個消息,則任務1就會重 復執(zhí)行B到F這5步操作,直到消息隊列里的消息被取空。
若任務1的運行介于兩次時鐘中斷信號之間,則不會被時鐘中斷處理程 序打斷;若任務1的運行跨越了一個時鐘中斷信號,則在被時鐘中斷處理程 序打斷的時候,任務1可能正在執(zhí)行步驟B、 C、 D、 E、 F中的任何一步操 作;若任務1連續(xù)處理多個消息,其任務1的運行跨越了多個時鐘中斷信號, 則任務1在每一次被時鐘中斷處理程序打斷的時候,也可能在執(zhí)行步驟B、 C、 D、 E、 F中的任何一步操作,且每次打斷的位置有可能不一樣。
由于嵌入式系統(tǒng)任務運行過程比較復雜,任務較多,容易發(fā)生死循環(huán), 即任務執(zhí)行路徑進入一個無限循環(huán)。為了檢測死循環(huán)并在發(fā)生死循環(huán)時及時 告警和提供一些用于死循環(huán)定位的信息,通常采用如下方式進行死循環(huán)的檢測和處理
在每次時鐘中斷信號來的時候,時鐘中斷處理程序獲取當前被打斷任務 的累計運行時間。如果當前被打斷任務的累計運行時間超過了某個事先設定 的上限閾值,則認為該任務陷入了死循環(huán),發(fā)出告警。最常見的告警方式就
是打印信息,包括打印死循環(huán)的系統(tǒng)告警信息;打印當前任務被打斷位置的 寄存器上下文信息,該寄存器包括所有的通用寄存器;打印調用棧信息;這 些打印出的信息用于進行問題定位。接著根據(jù)預先設置中止任務的執(zhí)行或者 重新啟動設備。
現(xiàn)有技術的不足之處在于,打印出的死循環(huán)定位信息不夠充分,在某些 情況下依據(jù)這些信息難以分析出死循環(huán)的原因。例如,仍以任務l為例,若 任務l陷入了死循環(huán),最大的可能是消息隊列里總有消息,導致步驟B判斷 消息隊列非空的操作結果總是"非空",永遠得不到"空"的結果,使得任 務l陷入死循環(huán)。按現(xiàn)有技術方案,當檢測到死循環(huán)后,根據(jù)打印出的信息 可以知道任務1是在執(zhí)行B、 C、 D、 E、 F這5步操作的某一步時發(fā)生了死 循環(huán)。但是這個信息并沒有什么價值。原因在于,很顯然任務l就是被設計 成一個循環(huán),只要任務l在運行,任何一次時鐘中斷信號發(fā)生時,時鐘中斷 處理程序一定是在B, C, D, E, F這5步操作的某一步打斷了任務的運行。
我們可以設想這樣一個場景,假設問題發(fā)生的根源在于,在執(zhí)行步驟D 的"交給模塊1處理"操作時,錯誤的給任務1自己發(fā)送了一個消息。按照 圖2的處理邏輯,步驟D完成后,任務1的消息隊列中增加了一個消息。 當任務1執(zhí)行完步驟F的"消息結束處理"操作后,回到步驟B的"判斷 消息隊列非空",此時得到的結果是"非空",又可以繼續(xù)執(zhí)行;到了步驟 D的"交給模塊l處理"時,發(fā)送完消息,消息隊列又從空變成了非空。如 此就一直循環(huán)執(zhí)行下去。所以,正是由于這個消息,使得任務l的處理陷入 了 一個不能結束的死循環(huán)狀態(tài)。
可見,現(xiàn)有的死循環(huán)檢測技術除了報告了一次死循環(huán),并提供檢測到死 循環(huán)時的寄存器上下文信息和調用棧信息,并沒有提供更多的有價值信息,采用這些有限的信息進行死循環(huán)定位難度很大。
發(fā)明內容
有鑒于此,本發(fā)明提供了一種為死循環(huán)提供定位信息的方法,能夠提供 較為豐富的死循環(huán)定位信息,從而降低定位難度。
該方法包4舌
在時鐘中斷處理程序中,連續(xù)記錄任務被打斷時的寄存器上下文信息;
當檢測到當前任務發(fā)生死循環(huán)時,將該死循環(huán)發(fā)生之前記錄的當前任務 每次被打斷時的寄存器上下文信息輸出為所述定位信息。
其中,記錄的所述寄存器上下文信息包括通用寄存器上下文信息中任 務被打斷的位置信息。
較佳地,記錄的所述寄存器上下文信息進一步包括硬件狀態(tài)寄存器中 的信息,和/或所述通用寄存器上下文信息中除任務被打斷的位置信息之外 的信息。
較佳地,所述記錄任務被打斷時的寄存器上下文信息的同時,進一步記 錄當前調用棧信息;
當檢測到當前任務發(fā)生死循環(huán)時,進一步將該死循環(huán)發(fā)生之前記錄的當 前任務每次被打斷時的調用棧信息輸出為所述定位信息。
其中,所述在時鐘中斷處理程序中,連續(xù)記錄任務被打斷時的寄存器上 下文信息,包括
預先定義數(shù)組和數(shù)組索引,數(shù)組索引用于指示將數(shù)據(jù)存入所述數(shù)組時的 存儲位置;
每次任務切換時,將所述數(shù)組索引置為初始值;
在時鐘中斷處理程序中,獲取當前任務被打斷時的寄存器上下文信息, 將獲取的信息存入所述數(shù)組,將所述數(shù)組索引的值遞增。
較佳地,所述數(shù)組中數(shù)組元素的個數(shù)為fxT; f為系統(tǒng)時鐘中斷的發(fā)生 頻率;T為預設的任務累計運行時間的上限閾值,當任務的累計運行時間大于T,則判定任務進入死循環(huán)。
較佳地,所述數(shù)組采用循環(huán)記錄方式,當所述數(shù)組索引的值等于所述數(shù) 組中數(shù)組元素個數(shù)減1時,則將所述數(shù)組索引重置為初始值。
其中,當檢測到當前任務發(fā)生死循環(huán)時,該方法進一步包括輸出系統(tǒng) 告警信息,以通知用戶當前任務發(fā)生死循環(huán);
和/或,輸出檢測到死循環(huán)時刻的寄存器上下文信息; 和/或,輸出檢測到死循環(huán)時刻的調用棧信息。
本發(fā)明還提供了 一種為死循環(huán)提供定位信息的裝置,能夠提供較為豐富 的死循環(huán)定位信息,從而降低定位難度。
該裝置包括中斷信息記錄單元和死循環(huán)檢測單元;
所述中斷信息記錄單元,用于在時鐘中斷處理程序中,連續(xù)記錄任務被 打斷時的寄存器上下文信息;
所述死循環(huán)檢測單元,用于對任務進行死循環(huán)^^測,當^r測到當前任務 發(fā)生死循環(huán)時,從所述中斷信息記錄單元記錄的信息中獲取該死循環(huán)發(fā)生之 前當前任務每次被打斷時的寄存器上下文信息,輸出為所述定位信息。
其中,所述中斷信息記錄單元記錄的寄存器上下文信息包括通用寄存器 上下文信息中任務被打斷的位置信息。
其中,所述中斷位置信息記錄單元包括初始化模塊和記錄模塊;
所述初始化模塊,用于每次任務切換時,將預先定義的數(shù)組索引置為初 始值,所述數(shù)組索引用于指示將數(shù)據(jù)存入一預先定義的數(shù)組時的存儲位置; 所述記錄模塊,用于存儲所述數(shù)組和所述數(shù)組索引;在時鐘中斷處理程序中, 獲取當前任務被打斷時的寄存器上下文信息,將獲取的信息存入所述數(shù)組, 將所述數(shù)組索引的值遞增。
根據(jù)以上技術方案可見,本發(fā)明利用時鐘中斷處理程序定時打斷任務運 行的特點,在時鐘中斷處理程序中記錄任務被打斷時的寄存器上下文信息, 這些連續(xù)信息勾勒出任務的近似運行軌跡。檢測到當前任務發(fā)生死循環(huán)時, 提供該任務的近似運行軌跡。該近似運行軌跡體現(xiàn)了任務執(zhí)行過程,為死循環(huán)的定位提供了較為豐富的依據(jù),有利于定位難度的降低。
圖1為一個簡化的嵌入式系統(tǒng)任務運行示意圖。
圖2為執(zhí)行某個任務時的運行邏輯示意圖。
圖3為本發(fā)明實施例中為死循環(huán)提供定位信息的方法流程圖。
圖4為本發(fā)明實施例中為死循環(huán)提供定位信息的裝置結構示意圖。
具體實施例方式
本發(fā)明為一種為死循環(huán)提供定位信息的方案,其基本思想為在任務運 行過程中,利用時鐘中斷處理程序定時打斷任務運行的特點,在時鐘中斷處 理程序中連續(xù)記錄任務被打斷時的寄存器上下文信息,寄存器上下文信息包 括任務被打斷的位置信息,這些連續(xù)的位置信息構成任務的近似運行軌跡。 當檢測到當前任務發(fā)生死循環(huán)時,提供記錄的該任務的近似運行軌跡,即死 循環(huán)發(fā)生之前記錄的該任務每次被打斷時的寄存器上下文信息,此外還提供 檢測到死循環(huán)時刻的寄存器上下文信息和調用棧信息,這3部分信息為死循 環(huán)的定位提供了較為豐富的依據(jù),有利于定位難度的降低。
下面結合附圖并舉實施例,對本發(fā)明進行詳細描述。
本發(fā)明可以采用預先定義的數(shù)組來記錄任務的近似運行軌跡信息。具體 來說,根據(jù)系統(tǒng)時鐘中斷的發(fā)生頻率f和系統(tǒng)任務進入死循環(huán)之前允許的累 積運行時間的上限閾值T,分配一個大小為fx丁的數(shù)組,即該數(shù)組中數(shù)組 元素個數(shù)為fxT個,該數(shù)組用于記錄中斷發(fā)生時寄存器上下文信息。該數(shù) 組可以為數(shù)值類型,也可以為指針類型,數(shù)值類型的數(shù)組直接存儲寄存器上 下文信息,指針類型數(shù)組存儲寄存器上下文信息在存儲介質中的位置。下面 以數(shù)組為數(shù)值類型的數(shù)組為例進行描述。
在實際中,也可以將數(shù)組的大小設置為其它值。但是將數(shù)組的大小設為 f x t可以將任務出現(xiàn)死循環(huán)之前的所有中斷信息全部記錄下來,不僅為死循環(huán)定位提供較為充足的信息,且不浪費數(shù)組所占用的資源。
再定義一個全局的數(shù)組索引,用于記錄數(shù)組的下標,指示數(shù)據(jù)存入數(shù)組 時的存儲位置。較佳地,數(shù)組使用循環(huán)記錄的方式,當數(shù)組索引達到最大值 即數(shù)組索引等于數(shù)組中數(shù)組元素個數(shù)減1時,將所述數(shù)組索引重新置為0, 這樣可以避免記錄大量信息給系統(tǒng)造成負擔。
圖3為本發(fā)明實施例中死循環(huán)的^r測方法流程圖。該實施例中,定義的 數(shù)組為X[i], i為數(shù)組索引,其值為從0到(fxT-l)的整數(shù)。如圖3所示, 該方法包括以下步驟
步驟1:數(shù)據(jù)復位操作
在系統(tǒng)的任務切換流程中,每次任務切換時,將數(shù)組索引i置為O,將 數(shù)組X初始化例如清零,表明開始新的記錄。同時,開始累計當前任務的 累計運行時間。
步驟2:數(shù)據(jù)記錄操作
在時鐘中斷處理程序中,獲取通用寄存器上下文信息,從獲取的信息中 查找任務被打斷的位置信息,即程序計數(shù)器(PC, Program Counter)值, PC值指明任務將要執(zhí)行的下一條指令的位置。然后將查找到的PC值存入數(shù) 組,并將數(shù)組索引i的值遞增,例如加1。當數(shù)組索引達到最大值即數(shù)組索 引等于數(shù)組中數(shù)組元素個數(shù)減1時,將所述數(shù)組索引i重新置為0。
本步驟中,還可以將硬件狀態(tài)寄存器中的信息存入數(shù)組,還可以將通用 寄存器的上下文信息中除去PC值以外的信息存入數(shù)組,還可以將當前時刻 的調用棧信息存入數(shù)組。
如果記錄的信息種類比較多,在實際中,也可以使用二維數(shù)組X[i] □], i為0到(fxT-l) , j為0到(J-l) , J為每次中斷時記錄的信息種類數(shù)目。 例如,如果需要記錄PC值和硬件狀態(tài)寄存器的值,則J為2。
步驟3:死循環(huán)檢測
在時鐘中斷處理程序中,獲取當前任務的累計運行時間,如果累計運行
10時間大于或等于預先設定的上限閾值,即認為當前任務陷入死循環(huán),執(zhí)行步驟4。
步驟4:發(fā)出告警按序輸出數(shù)組記錄的信息。輸出順序可以為時間從 舊到新的順序。
本實施例中,數(shù)組采用循環(huán)記錄方式,且在每次任務切換時將數(shù)組初始 化,因此無論是否循環(huán)一圈,都可以先輸出X[I]到X[fxT-l],再輸出X[O] 到X[I-l],其中,I為數(shù)組索引當前值,(fxT-l)為數(shù)組長度。
在實際中,數(shù)組是否采用循環(huán)記錄以及切換任務時數(shù)組是否初始化都可 以靈活選擇,只是不同選擇下,輸出過程也略有區(qū)別,具體來說
如果數(shù)組采用循環(huán)記錄方式,但在每次任務切換時不將數(shù)組初始化,則 需要記錄數(shù)組是否循環(huán)記錄一圈,如果沒有循環(huán)一圈,則直接輸出X[O]到 X[I-1];如果已經(jīng)循環(huán)一圏,則先輸出X[I]到X[fx T-l],再輸出X[O]到X[I-1〗。
如果數(shù)組不采用循環(huán)記錄方式,則無論是否初始化數(shù)組,都直接輸出 X[O]到X[I畫l]。
本步驟中,還可以將以下信息作為死循環(huán)定位信息中的一部分輸出
a、 打印系統(tǒng)告警信息,通知用戶當前任務發(fā)生了死循環(huán),并附上任務 名、函數(shù)名等相關信息;
b、 打印檢測到死循環(huán)時刻的寄存器上下文信息; c 、打印檢測到死循環(huán)時刻的調用棧信息。
步驟5:后期處理根據(jù)預先設置,決定中止當前任務并跳轉到下一個 就緒任務,或重啟設備。 至此,本流程結束。
為了實現(xiàn)上述方法,本發(fā)明還提供了一種為任務死循環(huán)提供定位信息的
裝置。圖4為該裝置的結構示意圖。如圖4所示,該裝置包括中斷信息記錄
單元41和死循環(huán);險測單元42。其中,
中斷信息記錄單元41,用于在時鐘中斷處理程序中,連續(xù)記錄任務被
ii打斷時的寄存器上下文信息。
死循環(huán)檢測單元42,用于對任務進行死循環(huán)才企測,當4企測到當前任務 發(fā)生死循環(huán)時,從中斷信息記錄單元41記錄的信息中,獲取該死循環(huán)發(fā)生
之前當前任務每次被打斷時的寄存器上下文信息,輸出為定位信息。
中斷信息記錄單元41具體包括初始化模塊411和記錄模塊412。其中,
初始化模塊411,用于每次任務切換時,將記錄模塊412存儲的數(shù)組索 引i置為0,所述數(shù)組索引用于指示將數(shù)據(jù)存入數(shù)組X時的存儲位置。其中 數(shù)組X的定義在方法實施例中已經(jīng)詳細描述,這里略。
記錄模塊412,用于存儲數(shù)組X和數(shù)組索引i。在時鐘中斷處理程序中, 獲取當前任務被打斷時的寄存器上下文信息,將獲取的信息存入數(shù)組X,將 數(shù)組索引i的值遞增。其中,存入數(shù)組X的寄存器上下文信息包括通用寄存 器上下文信息中任務被打斷的位置信息,即PC值。還可以包括硬件狀態(tài)寄 存器中的信息,和/或通用寄存器上下文信息中除任務被打斷的位置信息之 外的信息。更進一步地,還可以將當前調用棧信息記錄到數(shù)組X中。
死循環(huán)檢測單元42具體包括檢測模塊421和告警模塊422。其中,
檢測模塊421,用于在時鐘中斷處理程序中,獲取當前任務的累計運行 時間,當累計運行時間超過預先確定的上限閾值時,確定當前任務發(fā)生死循 環(huán),通知告警模塊422。
告警模塊422,用于在接到檢測模塊421的通知后,從記錄模塊412獲 取數(shù)組,按序輸出數(shù)組中記錄信息。輸出順序可以為時間從舊到新的順序。 具體輸出過程與數(shù)組是否采用循環(huán)記錄方式以及切換任務時數(shù)組是否初始 化相關,具體參見前述步驟4中的描述。該告警模塊422,進一步輸出系統(tǒng) 告警信息、檢測到死循環(huán)時刻的寄存器上下文信息和檢測到死循環(huán)時刻的調 用棧信息中的 一種或任意組合。告警模塊422所有輸出的信息組成了定位信 息,從而為死循環(huán)定位提供了較為豐富的依據(jù)。
綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的 保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改
12進等,均應包含在本發(fā)明的保護范圍之內
權利要求
1、一種為死循環(huán)提供定位信息的方法,其特征在于,該方法包括在時鐘中斷處理程序中,連續(xù)記錄任務被打斷時的寄存器上下文信息;當檢測到當前任務發(fā)生死循環(huán)時,將該死循環(huán)發(fā)生之前記錄的當前任務每次被打斷時的寄存器上下文信息輸出為所述定位信息。
2、 如權利要求l所述的方法,其特征在于,記錄的所述寄存器上下文信息 包括通用寄存器上下文信息中任務被打斷的位置信息。
3、 如權利要求l所述的方法,其特征在于,記錄的所述寄存器上下文信息 進一步包括硬件狀態(tài)寄存器中的信息,和/或所述通用寄存器上下文信息中除 任務被打斷的位置信息之外的信息。
4、 如權利要求l所述的方法,其特征在于,所述記錄任務被打斷時的寄存 器上下文信息的同時,進一步記錄當前調用棧信息;當檢測到當前任務發(fā)生死循環(huán)時,進一步將該死循環(huán)發(fā)生之前記錄的當前 任務每次被打斷時的調用棧信息輸出為所述定位信息。
5、 如權利要求1或2或3或4所述的方法,其特征在于,所述在時鐘中斷 處理程序中,連續(xù)記錄任務被打斷時的寄存器上下文信息,包括預先定義數(shù)組和數(shù)組索引,數(shù)組索引用于指示將數(shù)據(jù)存入所述數(shù)組時的存 儲位置;每次任務切換時,將所述數(shù)組索引置為初始值;在時鐘中斷處理程序中,獲取當前任務被打斷時的寄存器上下文信息,將 獲取的信息存入所述數(shù)組,將所述數(shù)組索引的值遞增。
6、 如權利要求5所述的方法,其特征在于,所述數(shù)組中數(shù)組元素的個數(shù)為 fx T; f為系統(tǒng)時鐘中斷的發(fā)生頻率;T為預設的任務累計運行時間的上限閾值, 當任務的累計運行時間大于T,則判定任務進入死循環(huán)。
7、 如權利要求5所述的方法,其特征在于,所述數(shù)組采用循環(huán)記錄方式, 當所述數(shù)組索引的值等于所述數(shù)組中數(shù)組元素個數(shù)減1時,則將所述數(shù)組索引重置為初始值。
8、 如權利要求l所述的方法,其特征在于,當檢測到當前任務發(fā)生死循環(huán) 時,該方法進一步包括輸出系統(tǒng)告警信息,以通知用戶當前任務發(fā)生死循環(huán);和/或,輸出檢測到死循環(huán)時刻的寄存器上下文信息; 和/或,輸出檢測到死循環(huán)時刻的調用棧信息。
9、 一種為任務死循環(huán)提供定位信息的裝置,其特征在于,該裝置包括中斷 信息記錄單元和死循環(huán)檢測單元;所述中斷信息記錄單元,用于在時鐘中斷處理程序中,連續(xù)記錄任務被打 斷時的寄存器上下文信息;所述死循環(huán)檢測單元,用于對任務進行死循環(huán)檢測,當檢測到當前任務發(fā) 生死循環(huán)時,從所述中斷信息記錄單元記錄的信息中獲取該死循環(huán)發(fā)生之前當 前任務每次被打斷時的寄存器上下文信息,輸出為所述定位信息。
10、 如權利要求8所述的裝置,其特征在于,所述中斷信息記錄單元記錄 的寄存器上下文信息包括通用寄存器上下文信息中任務被打斷的位置信息。
11、 如權利要求9或IO所述的裝置,其特征在于,所述中斷位置信息記錄 單元包括初始化模塊和記錄模塊;所述初始化模塊,用于每次任務切換時,將預先定義的數(shù)組索引置為初始 值,所述數(shù)組索引用于指示將數(shù)據(jù)存入一預先定義的數(shù)組時的存儲位置;所述記錄模塊,用于存儲所述數(shù)組和所述數(shù)組索引;在時鐘中斷處理程序 中,獲取當前任務被打斷時的寄存器上下文信息,將獲取的信息存入所述數(shù)組, 將所述數(shù)組索引的值遞增。
全文摘要
本發(fā)明公開了一種為任務死循環(huán)提供定位信息的方法和裝置。所述方法中,在時鐘中斷處理程序中,連續(xù)記錄任務被打斷時的寄存器上下文信息;當檢測到當前任務發(fā)生死循環(huán)時,將該死循環(huán)發(fā)生之前記錄的當前任務每次被打斷時的寄存器上下文信息輸出為所述定位信息。使用本發(fā)明能夠提供較為豐富的定位信息,從而降低定位難度。
文檔編號G06F9/46GK101504615SQ20091008013
公開日2009年8月12日 申請日期2009年3月24日 優(yōu)先權日2009年3月24日
發(fā)明者斌 余 申請人:杭州華三通信技術有限公司