alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1326回复:16

问题求助

楼主#
更多 发布于:2002-10-25 18:49
我写了个文件系统的驱动,但常常会出错.出错信息如下:

Break Due to KeBugCheckEx(Unhandled kernel mode exceptiong)
Error=C2(?) P1=99 P2=E1F9F368 P3=0 P4=0

堆栈信息如下:
ntoskrnl!KeBugCheckEx+0001
ntoskrnl!ExFreePoolwithTag+0126
ntoskrnl!ExFreePool+0006
ntoskrnl!NtClose+0228


小弟实在不懂,出错位置不在我的程序里,我该如何调试?

如果有那个大佬知道原因,或曾经也遇到过这样的问题,请帮我一把
先谢了
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-25 18:59
内核出错,最后都会跑到KeBugCheckEx的
看看是不是你访问了不存在的页面,或者溢出了?
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-10-25 19:31
内核出错,最后都会跑到KeBugCheckEx的
看看是不是你访问了不存在的页面,或者溢出了?


如果是我访问了不存在的页面,那么堆栈里应该显示我的函数名称啊!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-25 20:18
出现了异常 :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-25 20:58
这样的错误一般出现在有内存操作的地方,特别是用户自己分配的内存。你可以逐步缩小范围,多用调用输出,例如:DbgPrint,另外,在容易出异常的地方采用__try ..__except()..__finally结构来捕获异常,这样,可以避免错误的产生。
Tom_lyd
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-25 21:54
你是不是CLOSE了!一些不存在的或者CLOSE的句柄???
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-10-26 10:45
这样的错误一般出现在有内存操作的地方,特别是用户自己分配的内存。你可以逐步缩小范围,多用调用输出,例如:DbgPrint,另外,在容易出异常的地方采用__try ..__except()..__finally结构来捕获异常,这样,可以避免错误的产生。



我想不明白的是:如果是我的程序有问题,那么堆栈里应该显示我的函数啊.

我也知道问题肯定是在我的程序内,但是我找不到一个理性分析的方法.
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-26 10:48
我想不明白的是:如果是我的程序有问题,那么堆栈里应该显示我的函数啊.

我也知道问题肯定是在我的程序内,但是我找不到一个理性分析的方法.

堆栈没责任显示你的函数,如果那么容易,调试就很容易了 :mad: :mad: :mad:
这种情况,你可以在大概出错的周围放一些输出信息,DbgPrint?然后看哪个信息没输出,出错就是在它前面,在最后一条信息后面
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2002-10-26 12:04
堆栈没责任显示你的函数,如果那么容易,调试就很容易了 :mad: :mad: :mad:
这种情况,你可以在大概出错的周围放一些输出信息,DbgPrint?然后看哪个信息没输出,出错就是在它前面,在最后一条信息后面


原来这样.这下我惨了.打印调试信息我试过了,问题都出在我的函数外面.已经完全退出了我的函数.

我已经试了好多地方了

继续加油 !!!!!!!!!!!!!!!!!!!!!!!!
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-10-26 12:06
为了替你加油,你先给点分,加点油 :D
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2002-10-26 12:11
为了替你加油,你先给点分,加点油 :D



好说,谢了
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-10-26 13:04
好说,谢了

慷慨 :D
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2002-10-26 13:08
[quote]好说,谢了

慷慨 :D [/quote]


这是另一种感谢的表达方式 :D :D
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2002-10-26 16:00
[quote]堆栈没责任显示你的函数,如果那么容易,调试就很容易了 :mad: :mad: :mad:
这种情况,你可以在大概出错的周围放一些输出信息,DbgPrint?然后看哪个信息没输出,出错就是在它前面,在最后一条信息后面


原来这样.这下我惨了.打印调试信息我试过了,问题都出在我的函数外面.已经完全退出了我的函数.

我已经试了好多地方了

继续加油 !!!!!!!!!!!!!!!!!!!!!!!! [/quote]
那么可能你申请了资源,没有释放。
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-10-26 16:02
那么可能你申请了资源,没有释放。

你要不要也放点专家分? :D
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2002-10-26 16:38
花猫如今对分很痴迷呀,还没有看破红尘吗?你这和尚怎么当的。。。 :D
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-10-26 19:34
我写了个文件系统的驱动,但常常会出错.出错信息如下:

Break Due to KeBugCheckEx(Unhandled kernel mode exceptiong)
Error=C2(?) P1=99 P2=E1F9F368 P3=0 P4=0

堆栈信息如下:
ntoskrnl!KeBugCheckEx+0001
ntoskrnl!ExFreePoolwithTag+0126
ntoskrnl!ExFreePool+0006
ntoskrnl!NtClose+0228


小弟实在不懂,出错位置不在我的程序里,我该如何调试?

如果有那个大佬知道原因,或曾经也遇到过这样的问题,请帮我一把
先谢了


看你的堆栈信息,应该是在释放内存池的时候出现的错。

建议在每个释放内存池的地方加断点,看是否重复释放引起的异常。
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
游客

返回顶部