各位Csdner,哪位高手能找出bug原因?
求助各位Csdner,谁能找出bug原因???
今天测试人员跑应用程序的时候,连软件都没有显示出来就报出一个错误,信息如下:
Access violation at address 765CC35D in module 'kernel32.dll'. Write of address 00000004.
我用ProcExp查看程序堆栈如下:
各位谁能帮我找出错误???软件在我的环境下跑没有任何问题,但是在他的机器上就各种崩溃,各位帮帮忙!!!
------解决方案--------------------
先从最初级的下手:
1,没有注册这个dll
开始-运行-cmd
regsvr32 kernel32 .dll
2,kernel32.dll的版本不对或者没有该dll文件上网下一个
http://www.ylmf.net/dll/kernel32_dll.html
理论上来说,版本高的都能向下兼容版本低的,再不最简单的,就是从你电脑上拷贝这个dll文件,到目标电脑,的system32目录里,覆盖掉,最后在注册一下,一般就没问题了~
------解决方案--------------------
我觉得吧,可以再测试一台机子能否正常运行,,判断程序问题还是机子问题
------解决方案--------------------
dll?
被谁调用?调用方式。。。。。。。。
名字可以不讲,这些背景还是要讲的吧
------解决方案--------------------
多试几台不同操作系统的机子,有可能是版本不兼容
------解决方案--------------------
测试人员的机器是裸机测试,还是放了各中防火墙?
------解决方案--------------------
多线程编程时有些错误不是固定的,所以有时正常也不一定代表代码没问题,不要光从dll找错误,也仔细分析下代码,多用trycatch写日志看看
------解决方案--------------------
Access violation at address 765CC35D in module 'kernel32.dll'. Write of address 00000004.
这个 DLL 的地址 765CC35D 这里 向 000000004 这个地方写数据。
先看看 765CC35D 这个地址是什么函数。。 应该是有一个指针指向4, 被当做指向的值是4 传进去了。
今天测试人员跑应用程序的时候,连软件都没有显示出来就报出一个错误,信息如下:
Access violation at address 765CC35D in module 'kernel32.dll'. Write of address 00000004.
我用ProcExp查看程序堆栈如下:
- Delphi(Pascal) code
ntoskrnl.exe!KeSetEvent+0x2a1 ntoskrnl.exe!KeDelayExecutionThread+0x5cc ntoskrnl.exe!KeWaitForSingleObject+0x393 ntoskrnl.exe!KeQueryHighestNodeNumber+0x264 ntoskrnl.exe!KeRemoveQueueEx+0x990 ntoskrnl.exe!KeDelayExecutionThread+0x5cc ntoskrnl.exe!KeWaitForSingleObject+0x393 ntoskrnl.exe!NtWaitForSingleObject+0xc6 ntoskrnl.exe!ZwYieldExecution+0xb62 ntdll.dll!KiFastSystemCallRet kernel32.dll!WaitForSingleObjectEx+0x43 kernel32.dll!WaitForSingleObject+0x12 XXXXService.dll+0xbc7b4 //保护软件版权呵呵,把名字改成了XXXX,大家见谅! rtl100.bpl!SystemAssert$qqrx17SystemAnsiStringt1i+0x4a kernel32.dll!BaseThreadInitThunk+0x12 ntdll.dll!RtlInitializeExceptionChain+0xef ntdll.dll!RtlInitializeExceptionChain+0xc2
各位谁能帮我找出错误???软件在我的环境下跑没有任何问题,但是在他的机器上就各种崩溃,各位帮帮忙!!!
------解决方案--------------------
先从最初级的下手:
1,没有注册这个dll
开始-运行-cmd
regsvr32 kernel32 .dll
2,kernel32.dll的版本不对或者没有该dll文件上网下一个
http://www.ylmf.net/dll/kernel32_dll.html
理论上来说,版本高的都能向下兼容版本低的,再不最简单的,就是从你电脑上拷贝这个dll文件,到目标电脑,的system32目录里,覆盖掉,最后在注册一下,一般就没问题了~
------解决方案--------------------
我觉得吧,可以再测试一台机子能否正常运行,,判断程序问题还是机子问题
------解决方案--------------------
dll?
被谁调用?调用方式。。。。。。。。
名字可以不讲,这些背景还是要讲的吧
------解决方案--------------------
多试几台不同操作系统的机子,有可能是版本不兼容
------解决方案--------------------
测试人员的机器是裸机测试,还是放了各中防火墙?
------解决方案--------------------
多线程编程时有些错误不是固定的,所以有时正常也不一定代表代码没问题,不要光从dll找错误,也仔细分析下代码,多用trycatch写日志看看
------解决方案--------------------
Access violation at address 765CC35D in module 'kernel32.dll'. Write of address 00000004.
这个 DLL 的地址 765CC35D 这里 向 000000004 这个地方写数据。
先看看 765CC35D 这个地址是什么函数。。 应该是有一个指针指向4, 被当做指向的值是4 传进去了。