kucy_zhou@163.c
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2005-11-04
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1235回复:8

我的在驱动中设的中断在softice中怎么听不下来

楼主#
更多 发布于:2004-04-09 14:17
1.我用的是ds 2.6和win2000,我按照步骤装了驱动,设了断点,softice 用的是boot 方式的,可是在系统重启时,softice 也是对得,可是在softice 看不到我驱动的源代码,我也不知道是不是停在了我驱动的断点处?
2.在断点处停不下来,而且我的程序什么都没做,可是在收到一个中断后却在softice 中停下来提示break due to page fault(0Eh),fault=0000,这是什么错误亚?能给讲讲么?
visualmind
驱动牛犊
驱动牛犊
  • 注册日期2004-01-26
  • 最后登录2006-01-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-10 20:34
1 你用table命令查看一下,是否装载了你驱动的table;再用sym命令查看一下符号。至于源代码,用file *看看是否装载了源代码文件,否则,是看不到的。
2 很可能是你的代码没有设置PAGE_CODE(),使得代码快被系统分页调度至硬盘,再次需要执行时,引起缺页中断,然后crash
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-04-12 20:04
visualmind兄,你说的PAGE_CODE(),是怎么回事,能解释一下吗?

这些天在调驱动,不是很稳定,一直不明白是怎么回事,不知道是不是与你所说的PAGE_CODE()有关,谢谢
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-04-13 20:38
#if DBG
#define PAGED_CODE() \\
    if (KeGetCurrentIrql() > APC_LEVEL) { \\
    KdPrint(( \"EX: Pageable code called at IRQL %d\\n\", KeGetCurrentIrql() )); \\
        ASSERT(FALSE); \\
        }
#else
#define PAGED_CODE()
#endif

PAGED_CODE()不是“很可能是你的代码没有设置PAGE_CODE(),使得代码快被系统分页调度至硬盘,再次需要执行时,引起缺页中断,然后crash”,而是检查是否运行在passive_level
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-04-13 20:41
1.我用的是ds 2.6和win2000,我按照步骤装了驱动,设了断点,softice 用的是boot 方式的,可是在系统重启时,softice 也是对得,可是在softice 看不到我驱动的源代码,我也不知道是不是停在了我驱动的断点处?
2.在断点处停不下来,而且我的程序什么都没做,可是在收到一个中断后却在softice 中停下来提示break due to page fault(0Eh),fault=0000,这是什么错误亚?能给讲讲么?
 

1、要run到你的驱动代码处才有可能看到源代码。
2、这个估计是出错了蓝屏前先被softice拦截了,有可能就是你的驱动的错。

建议搜索一下,找softice的使用说明(有中文的)看看。
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-04-14 10:44
#if DBG
#define PAGED_CODE() \\
    if (KeGetCurrentIrql() > APC_LEVEL) { \\
    KdPrint(( \"EX: Pageable code called at IRQL %d\\n\", KeGetCurrentIrql() )); \\
        ASSERT(FALSE); \\
        }
#else
#define PAGED_CODE()
#endif

PAGED_CODE()不是“很可能是你的代码没有设置PAGE_CODE(),使得代码快被系统分页调度至硬盘,再次需要执行时,引起缺页中断,然后crash”,而是检查是否运行在passive_level


请问arthurtu兄,怎么样才能保证自己的代码不被系统交换到硬盘中呢?

[编辑 -  4/14/04 by  flying]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-04-14 13:07
放到不可分页内存中
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-04-16 08:50
驱动程序是由OS管理的,那怎么样才能保证自己的驱动是被OS放在不可分页内存中呢?
Flyshark
驱动牛犊
驱动牛犊
  • 注册日期2004-07-19
  • 最后登录2004-11-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-19 19:34
我遇到一个类似的问题:
可以用FIlE 打开文件源代码,但在进入断点后却只能看到汇编,请问高手该如何才能看到源代码?
游客

返回顶部