rifter
论坛版主
论坛版主
  • 注册日期2002-03-20
  • 最后登录2006-02-28
  • 粉丝1
  • 关注0
  • 积分65分
  • 威望8点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1403回复:8

STOP信息在什么地方看啊????

楼主#
更多 发布于:2002-08-14 15:16
**STOP: 0xD1,(FB624FE8,2,0,F1878B8)
*** ADDRESS F1878B8 BASE AT F1878000
DATASTAMP 3D59FFA2 - ISOC1394.SYS

dataStamp是指什么?根据F1B878B8 如何找到 驱动中的源程序位置
分数 你想要吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-08-14 15:46
呵呵,蓝屏了?
Bug Check 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL
The DRIVER_IRQL_NOT_LESS_OR_EQUAL bug check has value 0x000000D1. This signifies that the system attempted to access pageable memory at a process IRQL that was too high.

Parameters
The following parameters are displayed on the blue screen.

Parameter Description
1 Memory referenced
2 IRQL at time of reference
3 zero: Read
one: Write
4 Address that referenced memory


Comments
This bug check is usually caused by drivers that have used improper addresses.

Resolving the Problem
To deal with this bug, use a kernel debugger to get a stack trace.

freducn2002
驱动小牛
驱动小牛
  • 注册日期2002-06-26
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望29点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-08-14 15:52
I\'ve been toying with a method to debug BSOD that maybe someone can confirm
(or at least tell me I\'m wrong). I\'ve been using this method and it SEEMS
to work but maybe I\'ve been getting lucky. I needed something to track down
a
bugcheck that only occurred on free builds with no debugger running. I also
had
the misfortune that no MEMORY.DMP file was generated when the bugcheck
happened.

You need to generate a MAP (preferably with line information) file for your
driver.
Then use the first two lines of the BSOD.

Looking at the first two lines of the BSOD, if the second line denotes your
driver then take the two addresses (from the second line) and subtract them
and then add 10000h. The value 10000h is obtained from the \'Preferred load
address is\' line of the MAP file. Using the map file for your driver find
the first
\'Rva+base\' value that is not over the computed value. This will give you
the function
where the bugcheck occurred. Subtract the \'Rva+base\' value from the
computed value
and add the result to the \'Address\' column value. This result will give you
line
number where the bugcheck happened. Go to the line number information for
the OBJ file where the bugcheck happened and find the first value that is
not over the computed line number value. This should be the line number
within the file (and within the function) where the bugcheck happened.

For example (the data is fictional):

*** STOP 0x0000000A (0x00000000, 0x00000002, 0x00000000, 0xFE302649)
IRQL_NOT_LESS_OR_EQUAL*** Address FE302649 has base at FE300000 - MyDrv.sys

*********************************************************

Address Publics by Value Rva+Base Lib:Object

0004:00000194 _MyFunction1@4 00012574 f main.obj
0005:00000062 _DriverEntry@8 000126e2 f main.obj

:
:

Line numbers for obj\\i386\\main.obj(D:\\MyDrv\\main.c) segment .text

261 0001:000018f0 263 0001:000018f6 264 0001:000018fd 265
0001:00001904
266 0001:0000190c 268 0001:00001914 270 0001:0000191c 271
0001:00001922
273 0001:0000192d 274 0001:00001933 277 0001:00001935 278
0001:0000193b
279 0001:00001943 281 0001:00001945 282 0001:00001948

The calculation is:

FE302649
-FE300000
+ 10000 Taken from \'Preferred load address is\' in MAP file
----------------
12649
- 12574 Taken from \'Rva+base\' column in MAP file
----------------
D5
+ 194 Taken from \'Address\' column in MAP file
-----------------
269

The bugcheck occured on line 268 of MAIN.C in function MyFunction1.


arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-08-14 15:56
好像不错的样子。
rifter
论坛版主
论坛版主
  • 注册日期2002-03-20
  • 最后登录2006-02-28
  • 粉丝1
  • 关注0
  • 积分65分
  • 威望8点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-14 16:36
I\'ve been toying with a method to debug BSOD that maybe someone can confirm
(or at least tell me I\'m wrong). I\'ve been using this method and it SEEMS
to work but maybe I\'ve been getting lucky. I needed something to track down
a
bugcheck that only occurred on free builds with no debugger running. I also
had
the misfortune that no MEMORY.DMP file was generated when the bugcheck
happened.

You need to generate a MAP (preferably with line information) file for your
driver.
Then use the first two lines of the BSOD.

Looking at the first two lines of the BSOD, if the second line denotes your
driver then take the two addresses (from the second line) and subtract them
and then add 10000h. The value 10000h is obtained from the \'Preferred load
address is\' line of the MAP file. Using the map file for your driver find
the first
\'Rva+base\' value that is not over the computed value. This will give you
the function
where the bugcheck occurred. Subtract the \'Rva+base\' value from the
computed value
and add the result to the \'Address\' column value. This result will give you
line
number where the bugcheck happened. Go to the line number information for
the OBJ file where the bugcheck happened and find the first value that is
not over the computed line number value. This should be the line number
within the file (and within the function) where the bugcheck happened.

For example (the data is fictional):

*** STOP 0x0000000A (0x00000000, 0x00000002, 0x00000000, 0xFE302649)
IRQL_NOT_LESS_OR_EQUAL*** Address FE302649 has base at FE300000 - MyDrv.sys

*********************************************************

Address Publics by Value Rva+Base Lib:Object

0004:00000194 _MyFunction1@4 00012574 f main.obj
0005:00000062 _DriverEntry@8 000126e2 f main.obj

:
:

Line numbers for obj\\i386\\main.obj(D:\\MyDrv\\main.c) segment .text

261 0001:000018f0 263 0001:000018f6 264 0001:000018fd 265
0001:00001904
266 0001:0000190c 268 0001:00001914 270 0001:0000191c 271
0001:00001922
273 0001:0000192d 274 0001:00001933 277 0001:00001935 278
0001:0000193b
279 0001:00001943 281 0001:00001945 282 0001:00001948

The calculation is:

FE302649
-FE300000
+ 10000 Taken from \'Preferred load address is\' in MAP file
----------------
12649
- 12574 Taken from \'Rva+base\' column in MAP file
----------------
D5
+ 194 Taken from \'Address\' column in MAP file
-----------------
269

The bugcheck occured on line 268 of MAIN.C in function MyFunction1.


 


BSOD是什么呢?
分数 你想要吗?
rifter
论坛版主
论坛版主
  • 注册日期2002-03-20
  • 最后登录2006-02-28
  • 粉丝1
  • 关注0
  • 积分65分
  • 威望8点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-14 16:39
呵呵,蓝屏了?
Bug Check 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL
The DRIVER_IRQL_NOT_LESS_OR_EQUAL bug check has value 0x000000D1. This signifies that the system attempted to access pageable memory at a process IRQL that was too high.

Parameters
The following parameters are displayed on the blue screen.

Parameter Description
1 Memory referenced
2 IRQL at time of reference
3 zero: Read
one: Write
4 Address that referenced memory


Comments
This bug check is usually caused by drivers that have used improper addresses.

Resolving the Problem
To deal with this bug, use a kernel debugger to get a stack trace.

 

是啊,verifer就这么verify啊, 还是不能避免兰啊。怎么PAGE_FAULT_IN_NONPAGED_EREA没了,有出这个

还有你这些英文东西是哪里的啊?
分数 你想要吗?
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-14 17:12
BSOD就是blue screen of death,死亡蓝屏的意思,通俗的说就是蓝屏
rifter
论坛版主
论坛版主
  • 注册日期2002-03-20
  • 最后登录2006-02-28
  • 粉丝1
  • 关注0
  • 积分65分
  • 威望8点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-14 17:14
BSOD就是blue screen of death,死亡蓝屏的意思,通俗的说就是蓝屏


不好意思 看的时候 感觉到了!
再问问看 MAP文件怎么生成呢
分数 你想要吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2002-08-14 17:35
是啊,verifer就这么verify啊, 还是不能避免兰啊。怎么PAGE_FAULT_IN_NONPAGED_EREA没了,有出这个

还有你这些英文东西是哪里的啊?
 

2K的DDK上面。
游客

返回顶部