阅读:2369回复:2
请教一个WINDOWS的调试中断异常分发例程的问题!
用WINDBG工具进行内核调试,输入指令!idt,打印出中断例程分派表。
目前我有一事搞不清楚,当系统中任何一个进程发起调试中断的时候,也就是CPU中断号为1号和3号(来源于IA-32编程手册)的异常时,CPU首先是跳转到操作系统中的哪一个分派程序啊,这个例程肯定是中断例程分派表里的一项。但我搞不清楚是哪一项。我记得中断例程分派表里有这两项:halprofileinterrrupt和apicinterruptdispatchrotine这两个例程,名字大概是这个,记不太清了。这两函数是我认为最有可能的,因为其它的例程似乎在名字上看的出都对应了一个外部设备。但这两个函数在WRK-1.2里整个找不到源代码,能找到的线索也就是KE文件夹里有一个raiseexp的文件,里面就定义了三个函数。 感觉《深入理解WINDOWS操作系统》也就是windows internals这书看起来内容很详实,很厚,哪怕就是WRK也是这样。看起来很全,一到真正要解决问题的时候,感觉捉襟见肘。 不知道谁能解决我的问题啊! |
|
|
沙发#
发布于:2008-02-29 08:57
WRK里的ntos\ke\i386\trap.asm是这样写的:
_IDT label byte IDTEntry _KiTrap00, D_INT032 ; 0: Divide Error IDTEntry _KiTrap01, D_INT032 ; 1: DEBUG TRAP IDTEntry _KiTrap02, D_INT032 ; 2: NMI/NPX Error IDTEntry _KiTrap03, D_INT332 ; 3: Breakpoint 所以直接找_KiTrap01和_KiTrap03的代码就行了。 |
|
板凳#
发布于:2008-06-24 01:17
有道理,支持!
用户被禁言,该主题自动屏蔽! |
|