我在一台386的电脑上,用vb3.0编写的一个程序但是运行时经常会报错:应用程序导致general protection fault发生在模块krnl386.exe
下面是用Dr.Watson记录的错误信息,请高手看看原因是什么?万分感谢!十分紧急!!!
Start Dr. Watson 0.80 - Thu Jun 23 10:06:50 2005
****************************************************************************
Dr. Watson 0.80 Failure Report - Thu Jun 23 10:07:47 2005
PRJKYSPC had a 'Exceed Segment Bounds (Read)' fault at KERNEL 1:6517
$tag$PRJKYSPC$Exceed Segment Bounds (Read)$KERNEL 1:6517$rep     movsb$Thu Jun 23 10:07:47 2005CPU Registers (regs)
ax=0000  bx=2f5c  cx=0001  dx=0003  si=03a0  di=6fb2
ip=6517  sp=6ef4  bp=6f8a  O- D- I+ S- Z- A- P- C- 
cs = 0117      b420:af5f Code Ex/R
ss = 1fbf  80fed040:829f Data R/W 
ds = 1b8f  81147c80:039f Data R/W 
es = 1fbf  80fed040:829f Data R/W CPU 32 bit Registers (32bit)
eax = 00000000  ebx = 00002f5c  ecx = 00000001  edx = 00000003
esi = 000003a0  edi = 00006fb2  ebp = 00006f8a  esp = 80016ee4
fs = 0000         0:0000 Null Ptr 
gs = 0000         0:0000 Null Ptr 
eflag = 00000202System Info (info)
Windows version 3.10
Retail build
Windows Build 3.1
Username lwm                           
Organization - BMTD -                      
System Free Space 255958016
Stack base 9004, top 29334, lowest 26406, size 20330
System resources:  USER: 83% free, seg 1827  GDI: 76% free, seg 067f
LargestFree 253849600, MaxPagesAvail 61975, MaxPagesLockable 15786
TotalLinear 63452, TotalUnlockedPages 15793, FreePages 14561
TotalPages 16457, FreeLinearSpace 61981, SwapFilePages 63452
Page Size 4096
5 tasks executing.
WinFlags -
  Math coprocessor
  80486
  Enhanced mode
  Protect modeStack Dump (stack)
Stack Frame 0 is KERNEL 1:6517                ss:bp 1fbf:6f8a
0117:650e  aa                    stosb
0117:650f  c5 76 08              lds si, [bp+08]
0117:6512  8b 8e ff72            mov cx, [bp+ff72]
0117:6516  41                    inc cx
(KERNEL:1:6517)
0117:6517  f3 a4                 rep movsb
0117:6519  1f                    pop ds
0117:651a  fc                    cld
0117:651b  33 c9                 xor cx, cxStack Frame 1 is KERNEL 1:6348                ss:bp 1fbf:701a
0117:6340  8d 46 80              lea ax, [bp+80]
0117:6343  16                    push ss
0117:6344  50                    push ax
0117:6345  e8 0121               call near 6469
(KERNEL:1:6348)
0117:6348  8b d8                 mov bx, ax
0117:634a  8b f0                 mov si, ax
0117:634c  e8 00a2               call near 63f1
0117:634f  56                    push siStack Frame 2 is VBRUN300 25:648b             ss:bp 1fbf:7068
Stack Frame 3 is VBRUN300 25:4370             ss:bp 1fbf:70e8
Stack Frame 4 is VBRUN300 25:0000             ss:bp 1fbf:7104
Stack Frame 5 is VBRUN300 25:ffff             ss:bp 1fbf:7118
Stack Frame 6 is VBRUN300 25:82f1             ss:bp 1fbf:7122
Stack Frame 7 is VBRUN300 24:0030             ss:bp 1fbf:7150
Stack Frame 8 is VBRUN300 24:0311             ss:bp 1fbf:71a4
Stack Frame 9 is VBRUN300 95:00a4             ss:bp 1fbf:71be
Stack Frame 10 is VBRUN300 32:055c             ss:bp 1fbf:71e8
Stack Frame 11 is VBRUN300 32:031c             ss:bp 1fbf:7214
Stack Frame 12 is USER 1:2801                  ss:bp 1fbf:722e
Stack Frame 13 is VBRUN300 22:017c             ss:bp 1fbf:7262
Stack Frame 14 is VBRUN300 22:0067             ss:bp 1fbf:7270
Stack Frame 15 is VBRUN300 58:2225             ss:bp 1fbf:7282
Stack Frame 16 is VBRUN300 58:1492             ss:bp 1fbf:7294
System Tasks (tasks)
Task  FULLABC, Handle 148f, Flags 0001, Info   11984 03-28-95  1:00
  FileName C:\WINDOWS\SYSTEM\FULLABC.EXE
Task DRWATSON, Handle 13df, Flags 0001, Info   26736 03-28-95  1:00
  FileName C:\WINDOWS\DRWATSON.EXE
Task  PROGMAN, Handle 06d7, Flags 0001, Info  114992 03-28-95  1:00
  FileName C:\WINDOWS\PROGMAN.EXE
Task  WINFILE, Handle 1387, Flags 0001, Info  145824 03-28-95  1:00
  FileName C:\WINDOWS\WINFILE.EXE
Task PRJKYSPC, Handle 1fe7, Flags 0001, Info  234572 03-13-105 11:19
  FileName C:\XINCHANG\PRJKYSPC.EXE

解决方案 »

  1.   

    呵呵!著名的GPF(一般性保护错误)呀!
    非法操作可是Windows的祖传宝贝哟!想找到真正原因有点难。引发GPF的常见原因:内存越界读写。
    偶现一两次,不足为奇。若问题在多个不同程序的运行中都经常出现,那要考虑硬件或系统出了问题;
    若问题只在一个程序中某些特定情况下出现,那就是软件那部分编写上的漏洞了!
      

  2.   

    现在基本断定是用API读写INI文件引起的,由什么好办法?