阅读:2067回复:5
我的内存转储文件为何不能分析?
我得到核心转储文件,但用WINDBG打开显示:
Bugcheck code 000000D1 Arguments da6fa002 00000002 00000001 eb6da051 ChildEBP RetAddr Args to Child WARNING: Stack unwind information not available. Following frames may be wrong. 80549620 00000000 da6fa002 00000002 00000001 nt+0x67d67 WaitForEvent failed 分析: kd> !analyze -v No export analyze found 这是为什么呀,我急.系统WIN2K windbg为6.4.7 大家帮帮忙. |
|
沙发#
发布于:2005-04-30 10:01
我得到核心转储文件,但用WINDBG打开显示: 我产生Crash文件时总是先把Softice关掉,因为它会在兰屏前介入的会给分析造成影响.而且由于Windows本身的对意外的处理流程中也会造成一些影响,这就是测不准原理,测量工具总会对系统产生影响,关键是看你实际中是否能解决问题 对于找到你的错误,上面的信息已经足够000000D1 DRIVER_IRQL_NOT_LESS_OR_EQUAL 1 Memory referenced 2 IRQL at time of reference 3 0: Read 1: Write 4 Address that referenced memory 表明你的eb6da051这条指令要写da6fa002这个地址,一般DRIVER_IRQL_NOT_LESS_OR_EQUAL主要就是在太高的IRQL下要写分页内存,看一下这条指令,不就明白了,对于这个BUgcheck,太单纯了,根本不用堆栈桢来分析 |
|
|
板凳#
发布于:2005-04-30 10:22
可是我还是不知道错在那里啊?我的代码中没有使用IRQL提升.IRP_MJ_INTERNAL_DEVICE_CONTROL和IRP_MJ_DEVICE_CONTROL都是在PASSIVE_LEVEL上执行的啊,读写分页内存应该没有问题啊.
问一下内存转储文件能不能具体定位到错误的地方啊,原代码或汇编都行.堆栈总是显示为XXX.SYS+0x16(举例)没有显示我调用什么函数啊. |
|
地板#
发布于:2005-04-30 11:46
我上面说得很明白了
用u eb6da051,就看到那条指令了 |
|
|
地下室#
发布于:2005-04-30 15:07
不好意思,我在SOFTICE中输入了可是没有指令,只是显示FFFF,能把调试DMP文件的详细步骤描述一下吗?
不胜感激! [编辑 - 4/30/05 by nobounded] |
|
5楼#
发布于:2005-04-30 15:29
添加你的sys文件的pdb文件路径到symbol file path
如果条件允许,也即能上网,还可以用.sympath srv*DownstreamStore*http://msdl.microsoft.com/download/symbols命令,把系统文件的symbol也down下来,可能还需要.reload命令重新load symbol,具体意义查windbg的help 这样就能看见函数名、line、函数参数等 如果指定了source file path,甚至还能直接看到代码 |
|