首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从寄存器转储查找故障代码

从寄存器转储查找故障代码
EN

Stack Overflow用户
提问于 2016-02-11 23:06:09
回答 1查看 81关注 0票数 0

我正在尝试调试一个崩溃的自定义引导加载程序。我正在QEMU中运行它,并得到以下寄存器转储:

代码语言:javascript
复制
Triple fault
CPU Reset (CPU 0)
EAX=00000000 EBX=00000080 ECX=0005ff60 EDX=000258a8
ESI=0422fba0 EDI=0422fb90 EBP=00050000 ESP=0005ff5c
EIP=00025c8b EFL=00000046 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 000fffff 004f9e00 DPL=0 CS32 [CR-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     0002ea88 00000038
IDT=     00000000 000003ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=0000001c CCD=0005ff58 CCO=CLR     
EFER=0000000000000000
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000

我怀疑三重故障的根本原因是试图执行无效的处理器指令(在本例中是rdrand)。但是,我不能确认这一点,因为我不知道在上面的转储中异常代码在哪里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-11 23:21:26

事实证明,造成这种情况的确实是一个无效的指令错误。通过查看引导加载程序的反汇编并将其与Intel ISA文档进行比较,我证明了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35351858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档