[發明專利]基于符號文件的異常信息轉儲方法無效
| 申請號: | 200910049344.0 | 申請日: | 2009-04-15 |
| 公開(公告)號: | CN101593147A | 公開(公告)日: | 2009-12-02 |
| 發明(設計)人: | 王建濤;周公建 | 申請(專利權)人: | 卡斯柯信號有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 上海科盛知識產權代理有限公司 | 代理人: | 趙志遠 |
| 地址: | 200070上*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 符號 文件 異常 信息 方法 | ||
技術領域
本發明涉及異常信息轉儲方法,尤其涉及基于符號文件的異常信息轉儲方法。
背景技術
在軟件系統運行時,若發生嚴重錯誤,可能會導致系統崩潰。此時,若不借助輔助工具,很難找到導致程序崩潰的原因。
當前大多數軟件系統在程序崩潰時首先生成DUMP文件,該文件包含了進程地址空間內的內存二進制數據,然后借助WinDbg工具載入DUMP文件,并通過輸入相關的命令查看所需的異常信息。盡管該技術解決了定位程序崩潰的位置,但過程較為復雜。為了簡單方便的查看異常信息,提出了一種異常信息轉儲技術,實現了將內存中的二進制信息格式化成字符直接轉儲到日志文件中。經文件檢索發現,目前沒有這方面的方法。
發明內容
本發明的目的就是為了克服上述現有技術存在的缺陷,提供一種高效可靠的基于符號文件的異常信息轉儲方法。
本發明的目的可以通過以下技術方案來實現:基于符號文件的異常信息轉儲方法,其特征在于,該方法包括:
(1)捕獲異常;
(2)確定異常模塊;
(3)定位異常位置;
(4)獲得符號信息;
(5)轉儲異常信息。
所述的捕獲異常為當程序發生異常時,系統拋出異常,該異常被封裝在一個異常結構體中,從該異常結構體中獲得CPU各個寄存器的內容,通過寄存器中的值得到當前的函數的調用棧幀。
所述的確定異常模塊為成功得到函數棧幀后,利用棧幀相對于程序的偏移量確定發生異常的程序模塊。
所述的定位異常位置為定位發生異常的函數名、所在行及文件名。
所述的獲得符號信息為在此棧幀中通過回調函數就可枚舉得到函數的參數和局部變量。
所述的轉儲異常信息為對符號進行格式化,輸出其值時,通過符號的大小和類型來區別符號。
所述的捕獲異常中,系統同時或相隔很短的時間內拋出多個異常,捕獲異常對拋出的異常進行了同步,只允許產生最早的異常進入,并對該異常進行處理。
所述的轉儲異常信息中,實際輸出時一個符號對應兩個值,分別用來支持指針變量和基本類型變量。
與現有技術相比,本發明的優點包括:
(1)直接從內存讀取進程地址空間中的信息,再基于符號文件,直接將異常信息轉儲到日志文件中,簡化了異常信息查看過程;
(2)可以定制輸出格式,例如輸出XML文件、Syslog文件,或寫到數據庫中。
具體實施方式
以下結合具體實施例對本發明做進一步說明。
下面結合本發明在函數testFunc中拋出除以0的異常的應用軟件系統中,我們假設CPU類型為Intel?X86,操作系統為Windows?Xp,具體闡述其實施方式,具體步驟如下:
(1)捕獲異常。系統拋出拋出除0操作異常后,根據異常代碼判斷出異常原因,輸出INT_DIVIDE_BY_ZERO,當前線程的棧頂指針,棧底指針,下一個CPU指令存放的內存地址對應的寄存器分別為ESP=0013F730、EBP=0013F7F4、EIP=00409948,寄存器EBP中的值即為發生異常的函數棧幀地址。不同的機器類型或不同的操作系統,函數的棧幀布局結構是不同的,所以這里限定了CPU類型(Intel?X86)和操作系統(Windows?Xp)。
(2)確定異常模塊。發生異常的函數模塊句柄值為00400000,由此可得到模塊名稱。
(3)定位異常位置。由上面的函數棧幀得到異常發生所在行的信息,包括所在文件路徑、所在函數名testFunc、行數,以及所在模塊。
(4)獲得符號信息。當成功得到下一個棧幀的信息后,將該幀中的所有變量和參數都要枚舉出來。
(5)轉儲異常信息。由于是通過符號的大小和類型來區別符號的,當兩個符號的大小和類型都相同時,兩個符號不一定是同一個類型的變量。例如浮點型的自動變量與浮點型的指針變量,它們的大小都是4,類型都是浮點型的。為了解決這一問題對每個符號的值進行了兩種類型的格式化,分別為指針變量和基本類型變量。若變量為指針,則參考指針變量的值,否則參考基本類型變量的值。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于卡斯柯信號有限公司,未經卡斯柯信號有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910049344.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:公路壓力集電節點裝置
- 下一篇:一種高壓線的平衡器





