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

Windows内核调试

帖子发起人: ggggchen   发起时间: 2007-12-12 17:23 下午   回复: 2

Print Search
帖子排序:    
   2007-12-12, 17:23 下午
ggggchen 离线,最后访问时间: 2010/3/2 16:36:23 ggggchen

发帖数前200位
注册: 2007-12-12
发 贴: 4
windows中断调试方面的问题
Reply Quote

     我调试一个miniport的driver. 在中断的处理函数中设断点,发现eflag的IF位总是1.  这说明中断处理程序运行的时候,cpu是可以响应先的中断请求的. 我们知道CPU从中断门进入中断时候intel x86,架构cpu是会自动的将IF设为0的. 因此windows的miniport的中断处理程序此时IF设为1,应该是windows内核的底程中断处理函数里面就将IF手动设为了1.这样也可以理解,因为<<windows internals>>里面提到过,windows是通过软件实现中断优先级,所以可以假设在windows中,中断处理程序运行时IF总是1,如果有先中断到来,底程内核代码会去判断现在中断优先级,而决定是否当前的routine能否被打断.这个是我的理解.

     但是我突然想到一个问题,当我们用windbg去调试目标机的时候,可能为了支持windbg调试目标机,目标机的IF才总设为1,不然WINDBG不可以使目标机突然停止什么的.所以从windbg中看到的目标机的IF标志的值,不一定就是真实情况运行时候的.我不知道到底是怎么情况.问高人讲解一下.

 


IP 地址: 已记录   报告
   2007-12-15, 22:39 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: windows中断调试方面的问题
Reply Quote
同意第一段的理解。关于第二段,IF位的设置与是否调试没什么关系。第一,观察一下系统的异常和中断处理函数,它们确实是在很“前沿的”处理函数中就执行STI指令设置IF位,以除零异常的KiTrap00函数为例:
kd> u nt!KiTrap00+0x5f
nt!KiTrap00+0x5f:
804dac81 66837d6c1b cmp word ptr [ebp+6Ch],1Bh
804dac86 751d jne nt!KiTrap00+0x83 (804daca5)
804dac88 fb sti
804dac89 55 push ebp
804dac8a e887c61200 call nt!Ki386CheckDivideByZeroTrap (80607316)
804dac8f 8b5d68 mov ebx,dword ptr [ebp+68h]
804dac92 e909feffff jmp nt!KiExceptionExit+0x16f (804daaa0)
804dac97 fb sti
粗略看来,以上存在两天STI指令。仔细分析,这两个指令的执行是与是否在调试没有关系的。
第二,第二段描述的内核调试通信本身是不需要启用IF位的。因为当目标内核中断到调试器时,当前的CPU把IRQL提升到高(HIGH_LEVEL),不做别的事情只是和调试器通信,因此不需要中断来进行数据接收和发送。
IP 地址: 已记录   报告
   2007-12-17, 09:20 上午
ggggchen 离线,最后访问时间: 2010/3/2 16:36:23 ggggchen

发帖数前200位
注册: 2007-12-12
发 贴: 4
Re: windows中断调试方面的问题
Reply Quote
谢谢:).非常感谢.
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » windows中断调试方面的问题

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