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
沪ICP备05041459号
About AdvDbg Consult Train Services Products Tools Community Contact   登录 | 注册

VC6的数据断点功能是如何实现的

   可以使用CPU的调试寄存器来实现变量监视和数据断点。但并不是所有调试器的数据断点功能都是使用调试寄存器来实现的。举例来说,WinDBGba命令以及VS2005C/C++调试器都是使用调试寄存器来设置数据断点的,但是VC6调试器不是这样做的。一旦设置并启用了数据断点,VC6调试器便会记录下每个变量的当前值,然后以单步的方式恢复程序执行,这样,被调试程序执行一条汇编指令后便会因为调试异常而中断到VC6调试器,VC6调试器收到调试事件后会读取断点列表中的每个数据变量的当前值,并与它们的保存值相比较,如果发生变化,那么说明该断点命中,VC6会显示图4-6所示的对话框。如果没有变化,那么便再设置单步标志,让被调试程序再执行一条指令。

4-6 VC6显示的数据断点命中对话框

当显示以上对话框时,修改变量那条指令已经执行完毕,所以按OK后,调试器显示的执行位置箭头指向的是导致变量变化的代码的下一行。

由于VC6的数据断点功能不是使用调试寄存器设置的,所以没有数量限制,但这种实现方法的明显缺点是效率掉,会导致被调试程序运行速度变慢。

 

posted on Thursday, December 20, 2007 12:18 AM 由 Raymond

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2005 Advanced Debugging Ltd. All Rights Reserved.