阅读:1326回复:16
问题求助
我写了个文件系统的驱动,但常常会出错.出错信息如下:
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 小弟实在不懂,出错位置不在我的程序里,我该如何调试? 如果有那个大佬知道原因,或曾经也遇到过这样的问题,请帮我一把 先谢了 |
|
沙发#
发布于:2002-10-25 18:59
内核出错,最后都会跑到KeBugCheckEx的
看看是不是你访问了不存在的页面,或者溢出了? |
|
|
板凳#
发布于:2002-10-25 19:31
内核出错,最后都会跑到KeBugCheckEx的 如果是我访问了不存在的页面,那么堆栈里应该显示我的函数名称啊! |
|
地板#
发布于:2002-10-25 20:18
出现了异常 :D
|
|
|
地下室#
发布于:2002-10-25 20:58
这样的错误一般出现在有内存操作的地方,特别是用户自己分配的内存。你可以逐步缩小范围,多用调用输出,例如:DbgPrint,另外,在容易出异常的地方采用__try ..__except()..__finally结构来捕获异常,这样,可以避免错误的产生。
|
|
|
5楼#
发布于:2002-10-25 21:54
你是不是CLOSE了!一些不存在的或者CLOSE的句柄???
|
|
6楼#
发布于:2002-10-26 10:45
这样的错误一般出现在有内存操作的地方,特别是用户自己分配的内存。你可以逐步缩小范围,多用调用输出,例如:DbgPrint,另外,在容易出异常的地方采用__try ..__except()..__finally结构来捕获异常,这样,可以避免错误的产生。 我想不明白的是:如果是我的程序有问题,那么堆栈里应该显示我的函数啊. 我也知道问题肯定是在我的程序内,但是我找不到一个理性分析的方法. |
|
7楼#
发布于:2002-10-26 10:48
我想不明白的是:如果是我的程序有问题,那么堆栈里应该显示我的函数啊. 堆栈没责任显示你的函数,如果那么容易,调试就很容易了 :mad: :mad: :mad: 这种情况,你可以在大概出错的周围放一些输出信息,DbgPrint?然后看哪个信息没输出,出错就是在它前面,在最后一条信息后面 |
|
|
8楼#
发布于:2002-10-26 12:04
堆栈没责任显示你的函数,如果那么容易,调试就很容易了 :mad: :mad: :mad: 原来这样.这下我惨了.打印调试信息我试过了,问题都出在我的函数外面.已经完全退出了我的函数. 我已经试了好多地方了 继续加油 !!!!!!!!!!!!!!!!!!!!!!!! |
|
9楼#
发布于:2002-10-26 12:06
为了替你加油,你先给点分,加点油 :D
|
|
|
10楼#
发布于:2002-10-26 12:11
为了替你加油,你先给点分,加点油 :D 好说,谢了 |
|
11楼#
发布于:2002-10-26 13:04
好说,谢了 慷慨 :D |
|
|
12楼#
发布于:2002-10-26 13:08
[quote]好说,谢了 慷慨 :D [/quote] 这是另一种感谢的表达方式 :D :D |
|
13楼#
发布于:2002-10-26 16:00
[quote]堆栈没责任显示你的函数,如果那么容易,调试就很容易了 :mad: :mad: :mad: 原来这样.这下我惨了.打印调试信息我试过了,问题都出在我的函数外面.已经完全退出了我的函数. 我已经试了好多地方了 继续加油 !!!!!!!!!!!!!!!!!!!!!!!! [/quote] 那么可能你申请了资源,没有释放。 |
|
14楼#
发布于:2002-10-26 16:02
那么可能你申请了资源,没有释放。 你要不要也放点专家分? :D |
|
|
15楼#
发布于:2002-10-26 16:38
花猫如今对分很痴迷呀,还没有看破红尘吗?你这和尚怎么当的。。。 :D
|
|
16楼#
发布于:2002-10-26 19:34
我写了个文件系统的驱动,但常常会出错.出错信息如下: 看你的堆栈信息,应该是在释放内存池的时候出现的错。 建议在每个释放内存池的地方加断点,看是否重复释放引起的异常。 |
|
|