CN102708015A - 基于cpu不可屏蔽中断系统问题诊断的调试方法 - Google Patents
基于cpu不可屏蔽中断系统问题诊断的调试方法 Download PDFInfo
- Publication number
- CN102708015A CN102708015A CN2012101491054A CN201210149105A CN102708015A CN 102708015 A CN102708015 A CN 102708015A CN 2012101491054 A CN2012101491054 A CN 2012101491054A CN 201210149105 A CN201210149105 A CN 201210149105A CN 102708015 A CN102708015 A CN 102708015A
- Authority
- CN
- China
- Prior art keywords
- cpu
- information
- maskable interrupts
- performance counter
- adjustment method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于CPU不可屏蔽中断系统问题诊断的调试方法,是系统问题诊断的调试方法。包括步骤:(1)进入基本输入输出系统;(2)判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启,则基本输入输出系统执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在基本输入输出系统中加入不可屏蔽中断的处理例程;(3)进入不可屏蔽中断的处理例程;(4)输出调试过程信息;(5)定位系统故障原因。通过上述方法的执行,能将系统中断过程中的故障线索展现出来,便于用户排除故障。
Description
技术领域
本发明涉及一种基于CPU不可屏蔽中断系统问题诊断的调试方法,属于计算机系统故障诊断技术领域。
背景技术
目前,不可屏蔽中断NMI(Non-maskable-interrupt)是在计算机遇到严重错误时,其是由硬件电路向CPU发出的一种中断信号。与普通中断不同的是,即使CPU的状态寄存器设置为屏蔽所有软硬件中断,NMI一旦产生,CPU将立即响应。正是由于这种特性,通常情况下NMI用于严重故障处理和故障恢复。在系统出现NMI的情况下,系统不能进行任何响应,其他常规的调试手段均不能发挥作用。在这种情况下,就会给用户的使用带来种种不便,发生NMI时,用户无从知道计算机系统出现何种故障,为用户解决故障造成了麻烦。因此十分需要一种解决上述问题的调试方法。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种通过控制CPU的NMI 引脚,激活CPU,从而把故障时刻的现场信息呈现出来,便于用户找出系统故障原因的基于CPU不可屏蔽中断系统问题诊断的调试方法。
技术方案:一种基于CPU不可屏蔽中断系统问题诊断的调试方法,包括如下步骤:
步骤1,进入基本输入输出系统(BIOS);
步骤2,NMI由严重硬件故障触发,通常的处理方法是重新启动硬件系统,因此NMI的入口地址和系统复位地址相同。当发生NMI时,系统将简单的重启机器。然而要利用NMI进行故障定位和调试,需要判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启(包括冷重启和热重启),则BIOS执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在BIOS中加入不可屏蔽中断的处理例程;
步骤3,进入不可屏蔽中断的处理例程;
步骤4,输出调试过程信息;
步骤5,定位系统故障原因。
所述不可屏蔽中断的处理例程的步骤如下:
步骤30,保存CPU当前的状态信息;
步骤31,修改异常返回地址(EPC)寄存器,使其最低位为1,并将修改后的EPC寄存器称为强制触发的地址;NMI发生时,故障时所执行指令地址保存在EPC寄存器中。因为NMI表示了一种硬件错误,直接返回到这个地址,系统并不能正常工作。利用NMI进行Bug调试时,可以修改EPC寄存器,使其最低位为1,然后通过ERET指令跳到内核执行。由于EPC最低位为1,在返回到系统时将立即触发地址非对齐例外,进入地址例外处理。
所述步骤30中,因BIOS存储在ROM中,并在ROM中执行,因此对变量不能进行修改,需通过与操作系统内核协商,开辟一个专用的内存区域进行对CPU当前状态保存。
所述CPU当前的状态信息包括CPU 状态寄存器信息、Performance Counter 寄存器(用来对CPU执行指令计数)信息、BadVaddr以及Cause 寄存器信息。
所述步骤32中,地址例外处理的具体步骤为:
步骤320,开启性能计数器Performance Counter,并在时钟中断处理中周期性的将性能计数器Performance Counter记录到一个变量;
步骤321,判断当前例外处理是系统默认的地址例外处理还是强制触发的地址例外,如果是强制触发的地址例外,则进入步骤4。
步骤4中所述的状态信息包括寄存器、调用堆栈、EPC、以及步骤30中保存的BadVaddr和Performance Counter信息。
定位系统故障原因的方法是,通过步骤30中保存的BIOS中Performance Counter信息和内核中最后记录的Performance Counter信息判断在发生严重故障时CPU是否停止还是陷入死循环;通过分析BIOS中记录的EPC 信息找出发生严重错误所执行的指令;通过分析调用堆栈信息找出触发错误的指令序列。
有益效果:与现有技术相比,本发明所提供的本专利的基于CPU不可屏蔽中断系统问题诊断的调试方法,独特之处在于计算机已经发生死机,系统不能进行任何响应,其他常规的调试手段均不能发挥作用时,通过控制CPU的NMI 引脚,进入BIOS,从而把故障时刻的现场信息呈现出来给用户,帮助用户找出 故障原因。
附图说明
图1为本发明实施例的流程图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示:本实施例公开的基于CPU不可屏蔽中断系统问题诊断的调试方法,包括如下步骤:
进入BIOS。
判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启,则BIOS执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在BIOS中加入不可屏蔽中断的处理例程。
进入不可屏蔽中断的处理例程:通过与操作系统内核协商,开辟一个专用的内存区域,保存CPU当前的寄存器信息、Performance Counter 寄存器信息、BadVaddr以及Cause 寄存器信息;修改EPC寄存器,使其最低位为1,并将修改后的EPC寄存器称为强制触发的地址;然后通过ERET指令跳到内核执行地址例外处理。
开启性能计数器Performance Counter,并在时钟中断处理中周期性的将性能计数器Performance Counter记录到一个变量。
判断当前例外处理是系统默认的地址例外处理还是强制触发的地址例外,如果是强制触发的地址例外,则输出寄存器、调用堆栈、EPC、以及BIOS中保存的BadVaddr和Performance Counter信息等调试过程信息。
通过保存的BIOS中Performance Counter信息和内核中最后记录的Performance Counter信息判断在发生严重故障时CPU是否停止还是陷入死循环;通过分析BIOS中记录的EPC 信息找出发生严重错误所执行的指令;通过分析调用堆栈信息找出触发错误的指令序列。
本实施例的方法在基于MIPS CPU的计算机上已经成功应用,并取得良好的效果,对于其他CPU的调试,操作方法与本实施例相同。
Claims (8)
1.一种基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于,包括如下步骤:
步骤1,进入基本输入输出系统;
步骤2,判断计算机当前状态是重启还是不可屏蔽中断;如果计算机当前状态是重启,则基本输入输出系统执行启动,装载内核启动系统;如果计算机当前状态是不可屏蔽中断,则在基本输入输出系统中加入不可屏蔽中断的处理例程;
步骤3,进入不可屏蔽中断的处理例程;
步骤4,输出调试过程信息;
步骤5,定位系统故障原因。
2.如权利要求1所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于:步骤1中所述重启包括冷重启和热重启。
3.如权利要求1所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于,所述不可屏蔽中断的处理例程的步骤如下:
步骤30,保存CPU当前的状态信息;
步骤31,修改EPC寄存器,使其最低位为1,并将修改后的EPC寄存器称为强制触发的地址;
步骤32,跳至内核,进行地址例外处理。
4.如权利要求3所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于:所述步骤30中,通过与操作系统内核协商,开辟一个专用的内存区域进行对CPU当前状态保存。
5.如权利要求3或4所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于:所述CPU当前的状态信息包括CPU 状态寄存器信息、Performance Counter 寄存器信息、BadVaddr以及Cause 寄存器信息。
6.如权利要求3所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于,所述步骤32中,地址例外处理的具体步骤为:
步骤320,开启性能计数器Performance Counter,并在时钟中断处理中周期性的将性能计数器Performance Counter记录到一个变量;
步骤321,判断当前例外处理是系统默认的地址例外处理还是强制触发的地址例外,如果是强制触发的地址例外,则进入步骤4。
7.如权利要求1所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于:步骤4中所述的状态信息包括寄存器、调用堆栈、EPC、以及步骤30中保存的BadVaddr和Performance Counter信息。
8.如权利要求1所述的基于CPU不可屏蔽中断系统问题诊断的调试方法,其特征在于:定位系统故障原因的方法是,通过步骤30中保存的基本输入输出系统中Performance Counter信息和内核中最后记录的Performance Counter信息判断在发生严重故障时CPU是否停止还是陷入死循环;通过分析基本输入输出系统中记录的EPC 信息找出发生严重错误所执行的指令;通过分析调用堆栈信息找出触发错误的指令序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101491054A CN102708015A (zh) | 2012-05-15 | 2012-05-15 | 基于cpu不可屏蔽中断系统问题诊断的调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101491054A CN102708015A (zh) | 2012-05-15 | 2012-05-15 | 基于cpu不可屏蔽中断系统问题诊断的调试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102708015A true CN102708015A (zh) | 2012-10-03 |
Family
ID=46900828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101491054A Pending CN102708015A (zh) | 2012-05-15 | 2012-05-15 | 基于cpu不可屏蔽中断系统问题诊断的调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102708015A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500133A (zh) * | 2013-09-17 | 2014-01-08 | 华为技术有限公司 | 故障定位方法及装置 |
CN105279021A (zh) * | 2015-10-16 | 2016-01-27 | 华为技术有限公司 | 执行不可屏蔽中断的方法和装置 |
TWI582586B (zh) * | 2016-06-01 | 2017-05-11 | 神雲科技股份有限公司 | 輸出電腦系統的機器檢查例外資訊的方法 |
CN107656854A (zh) * | 2016-07-26 | 2018-02-02 | 佛山市顺德区顺达电脑厂有限公司 | 输出计算机系统的机器检查例外信息的方法 |
CN109144873A (zh) * | 2018-08-22 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种linux内核处理方法及装置 |
CN109918251A (zh) * | 2019-03-20 | 2019-06-21 | 浪潮商用机器有限公司 | 处理器中断的触发方法及装置 |
CN112256507A (zh) * | 2020-10-22 | 2021-01-22 | 地平线(上海)人工智能技术有限公司 | 芯片故障诊断方法、装置、可读存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1070496A (zh) * | 1991-08-30 | 1993-03-31 | 英特尔公司 | 自动暂停状态重启动的透明系统中断 |
CN101470662A (zh) * | 2007-12-29 | 2009-07-01 | 北京天融信网络安全技术有限公司 | 一种多核mips平台下并行系统调试方法 |
CN102346688A (zh) * | 2010-07-30 | 2012-02-08 | Mips技术公司 | 用于自动硬件中断处理的系统和方法 |
-
2012
- 2012-05-15 CN CN2012101491054A patent/CN102708015A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1070496A (zh) * | 1991-08-30 | 1993-03-31 | 英特尔公司 | 自动暂停状态重启动的透明系统中断 |
CN101470662A (zh) * | 2007-12-29 | 2009-07-01 | 北京天融信网络安全技术有限公司 | 一种多核mips平台下并行系统调试方法 |
CN102346688A (zh) * | 2010-07-30 | 2012-02-08 | Mips技术公司 | 用于自动硬件中断处理的系统和方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500133A (zh) * | 2013-09-17 | 2014-01-08 | 华为技术有限公司 | 故障定位方法及装置 |
US10437632B2 (en) | 2015-10-16 | 2019-10-08 | Huawei Technologies Co., Ltd. | Method and apparatus for executing non-maskable interrupt |
US10970108B2 (en) | 2015-10-16 | 2021-04-06 | Huawei Technologies Co., Ltd. | Method and apparatus for executing non-maskable interrupt |
CN110209615B (zh) * | 2015-10-16 | 2023-09-12 | 华为技术有限公司 | 执行不可屏蔽中断的方法和装置 |
US11360803B2 (en) | 2015-10-16 | 2022-06-14 | Huawei Technologies Co., Ltd. | Method and apparatus for executing non-maskable interrupt |
WO2017063529A1 (zh) * | 2015-10-16 | 2017-04-20 | 华为技术有限公司 | 执行不可屏蔽中断的方法和装置 |
CN105279021B (zh) * | 2015-10-16 | 2019-05-07 | 华为技术有限公司 | 执行不可屏蔽中断的方法和装置 |
CN105279021A (zh) * | 2015-10-16 | 2016-01-27 | 华为技术有限公司 | 执行不可屏蔽中断的方法和装置 |
CN110209615A (zh) * | 2015-10-16 | 2019-09-06 | 华为技术有限公司 | 执行不可屏蔽中断的方法和装置 |
TWI582586B (zh) * | 2016-06-01 | 2017-05-11 | 神雲科技股份有限公司 | 輸出電腦系統的機器檢查例外資訊的方法 |
CN107656854A (zh) * | 2016-07-26 | 2018-02-02 | 佛山市顺德区顺达电脑厂有限公司 | 输出计算机系统的机器检查例外信息的方法 |
CN109144873A (zh) * | 2018-08-22 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种linux内核处理方法及装置 |
CN109918251A (zh) * | 2019-03-20 | 2019-06-21 | 浪潮商用机器有限公司 | 处理器中断的触发方法及装置 |
CN112256507A (zh) * | 2020-10-22 | 2021-01-22 | 地平线(上海)人工智能技术有限公司 | 芯片故障诊断方法、装置、可读存储介质及电子设备 |
CN112256507B (zh) * | 2020-10-22 | 2023-10-27 | 地平线(上海)人工智能技术有限公司 | 芯片故障诊断方法、装置、可读存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102708015A (zh) | 基于cpu不可屏蔽中断系统问题诊断的调试方法 | |
CN101887393B (zh) | 基于半虚拟化技术的设备故障复现方法及系统 | |
Ryzhyk et al. | Dingo: Taming device drivers | |
US8572577B2 (en) | Monitoring changes to data within a critical section of a threaded program | |
US20080077780A1 (en) | System and Method for Software Debugging | |
US7971104B2 (en) | Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations | |
JP2004086910A (ja) | コンピュータ・プログラムをデバックするための方法、システムおよびソフトウェア・プロダクト | |
WO2007080931A1 (ja) | デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム | |
JP2007004787A (ja) | コンピュータシステムの高速ブート | |
CN110892384B (zh) | 对处理器未定义行为依赖的重放时间行程跟踪 | |
CN100359486C (zh) | 一种调试操作系统内核态程序的方法及装置 | |
EP3948546B1 (en) | Collecting application state in a runtime environment for reversible debugging | |
US11113182B2 (en) | Reversible debugging in a runtime environment | |
CN115878363A (zh) | 用于解析处理器异常的方法、装置及计算机可读存储介质 | |
US7793160B1 (en) | Systems and methods for tracing errors | |
CN117389781B (zh) | 服务器设备的异常侦测与恢复方法、系统、服务器及介质 | |
US11030075B2 (en) | Efficient register breakpoints | |
KR101785540B1 (ko) | 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치 | |
CN114443330A (zh) | 看门狗重启故障确定方法、装置、电子设备及存储介质 | |
WO2023169289A1 (zh) | 一种进程的执行状态切换方法及装置 | |
Tröger et al. | Software-implemented fault injection at firmware level | |
JP6996748B2 (ja) | デバッグシステム、bios、情報処理装置及びデバッグ方法 | |
KR20190076217A (ko) | 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법 | |
CN118132427A (zh) | 芯片的运行跟踪方法、芯片、板卡、电子设备及存储介质 | |
CN118035030A (zh) | 一种基于Uboot的操作系统故障监控方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121003 |