Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

《软件调试》的示例程序

帖子发起人: soarwing   发起时间: 2009-08-31 18:25 下午   回复: 2

Print Search
帖子排序:    
   2009-08-31, 18:25 下午
soarwing 离线,最后访问时间: 2009/8/31 18:13:16 soarwing

发帖数前500位
注册: 2009-08-31
发 贴: 2
关于第三章fault.cpp
Reply Quote

raymond,你好

我按照第三章的fault.cpp书上的代码,在vc2005里面调试,发现执行到__except块后,程序一直不退出,不断打印:

Before div in __try block:nDiviedend=22, nDivisor=0, nResult=100.
In __except block:nDiviedend=22, nDivisor=0, nResult=100.
Divide Zero exception detected:nDiviedend=22, nDivisor=1, nResult=100.
In __except block:nDiviedend=22, nDivisor=1, nResult=100.
Divide Zero exception detected:nDiviedend=22, nDivisor=1, nResult=100.
In __except block:nDiviedend=22, nDivisor=1, nResult=100.
Divide Zero exception detected:nDiviedend=22, nDivisor=1, nResult=100.
In __except block:nDiviedend=22, nDivisor=1, nResult=100.
Divide Zero exception detected:nDiviedend=22, nDivisor=1, nResult=100.
In __except block:nDiviedend=22, nDivisor=1, nResult=100.
Divide Zero exception detected:nDiviedend=22, nDivisor=1, nResult=100.
……

后来在下载了书上配套的源码,发现和书上不同的是已经把
nResult=nDividend / nDivisor; 这一句改成了汇编:

        // nResult=nDividend / nDivisor;
        __asm{
            mov eax, nDividend
            cdq
            idiv nDivisor
            mov nResult, eax
        };

 

参照配套的源码修改后,vc2005里面程序执行的流程也正常了。
请问这可能是什么原因?

 


IP 地址: 已记录   报告
   2009-08-31, 20:57 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 关于第三章fault.cpp
Reply Quote
出问题的情况是因为编译器把nDivisor变量分配在寄存器中了。下面的帖子曾经讨论过:
http://advdbg.org/forums/1292/ShowPost.aspx
IP 地址: 已记录   报告
   2009-09-01, 14:54 下午
soarwing 离线,最后访问时间: 2009/8/31 18:13:16 soarwing

发帖数前500位
注册: 2009-08-31
发 贴: 2
Re: 关于第三章fault.cpp
Reply Quote
明白了,谢谢。
IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》的示例程序 » Re: 关于第三章fault.cpp

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.