我的软件会自动退出,我们找不到合适的解决方法!请大家指导!

hejunhening 2003-12-30 06:00:41
我的软件在编译和调试的时候也没什么错误,有时候运行几个小时,有时候运行一个晚上,有时候运行一天或者几天以后,程序就会自动退出,因为我的程序需要的是连续不断的全天工作,与设计初衷相去甚远,我自己也在关键的地方写了些工作日志以期记录下退出的地方,结果还是检测不到在那里退出,也不是内存泄露的问题,内存的也没有涨。虽然用了第三方的SDK,但是用其他语言(VC)做出来没有问题。我用的是DELPHI。也深入的和开发第三方的SDK的人员交流过,SDK也没有问题,因为这个第三方的SDK用的很广。
请大家指点一下!或者告诉我一些比较有效的工具。谢谢!
...全文
130 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
outer2000 2003-12-31
  • 打赏
  • 举报
回复
你的THREAD里的异常处理是不是有问题;
hejunhening 2003-12-31
  • 打赏
  • 举报
回复
这个是我用bandschecker测试的时候,软件退出是留下的东西。
我现在估计错误和线程有关系。但是我找不到是那一个线程。又不能全部屏蔽完。
这都是我已经屏蔽了一些线程以后的提示了。我找不到原代码在那里有问题。
希望高手提示。用delphi的调试系统调试的时候,自动退出的时候去看CPU,就已经到了
NTDLL。DLL里面的触发异常了。


CREATE_PROCESS: 00400000
LOAD_DLL base:77F80000 ntdll.dll
LOAD_DLL base:77E60000 KERNEL32.dll
LOAD_DLL base:77DF0000 USER32.dll
LOAD_DLL base:77F40000 GDI32.dll
LOAD_DLL base:796D0000 ADVAPI32.dll
LOAD_DLL base:786F0000 RPCRT4.dll
LOAD_DLL base:77990000 OLEAUT32.dll
LOAD_DLL base:77A30000 ole32.dll
LOAD_DLL base:79A90000 MPR.dll
LOAD_DLL base:777E0000 VERSION.dll
LOAD_DLL base:75950000 LZ32.dll
LOAD_DLL base:77B30000 COMCTL32.dll
LOAD_DLL base:777C0000 WINSPOOL.DRV
LOAD_DLL base:78F90000 SHELL32.dll
LOAD_DLL base:63180000 SHLWAPI.dll
LOAD_DLL base:76AF0000 comdlg32.dll
LOAD_DLL base:78000000 MSVCRT.dll
LOAD_DLL base:77530000 WINMM.dll
LOAD_DLL base:10000000 tmSDK.dll
LOAD_DLL base:00230000 tmman32.dll
LOAD_DLL base:74FD0000 WSOCK32.dll
LOAD_DLL base:74FB0000 WS2_32.dll
LOAD_DLL base:74FA0000 WS2HELP.dll
LOAD_DLL base:75100000 NETAPI32.dll
LOAD_DLL base:797B0000 Secur32.dll
LOAD_DLL base:75150000 NETRAP.dll
LOAD_DLL base:750E0000 SAMLIB.dll
LOAD_DLL base:77930000 WLDAP32.dll
LOAD_DLL base:77960000 DNSAPI.dll
LOAD_DLL base:00630000 hie_mp4play.dll
LOAD_DLL base:6A1A0000 MSVFW32.dll
LOAD_DLL base:72760000 DDRAW.dll
LOAD_DLL base:72800000 DCIMAN32.dll
LOAD_DLL base:75540000 DSOUND.dll
LOAD_DLL base:02640000 G729Dll.dll
LOAD_DLL base:75E00000 IMM32.dll
LOAD_DLL base:0C000000 BCCORE.DLL
LOAD_DLL base:5B3F0000 SYMENGNT.dll
LOAD_DLL base:5B2A0000 bckproj.dll
LOAD_DLL base:5B260000 BCKMOD.dll
LOAD_DLL base:5B250000 BCKLog.dll
Username: Administrator
Machine: DSOFT
Date: 12/31/03 14:23:03
LOAD_DLL base:6C330000 LPK.dll
LOAD_DLL base:65D20000 USP10.dll
LOAD_DLL base:75960000 MMDRV.dll
UNLOAD_DLL (MMDRV.dll) base: 75960000
OutDbStr:
tmman32:Version[5.2.0]
OutDbStr: tmman32:DLLInitialize:GetVersionEx:Maj[5]:Min[0]:Bld[893]:PID[2]
CREATE_THREAD
CREATE_THREAD
LOAD_DLL base:6DD30000 ShellHook.dll
LOAD_DLL base:68E90000 OLEPRO32.DLL
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
LOAD_DLL base:77800000 RNR20.dll
LOAD_DLL base:77300000 iphlpapi.dll
LOAD_DLL base:774E0000 ICMP.dll
LOAD_DLL base:772E0000 MPRAPI.dll
LOAD_DLL base:77370000 ACTIVEDS.dll
LOAD_DLL base:77340000 adsldpc.dll
LOAD_DLL base:777F0000 rtutils.dll
LOAD_DLL base:6D990000 SETUPAPI.dll
LOAD_DLL base:794D0000 USERENV.dll
LOAD_DLL base:774A0000 RASAPI32.dll
LOAD_DLL base:77480000 rasman.dll
LOAD_DLL base:774F0000 TAPI32.dll
LOAD_DLL base:77320000 DHCPCSVC.DLL
CREATE_THREAD
LOAD_DLL base:777A0000 WINRNR.dll
LOAD_DLL base:777B0000 rasadhlp.dll
LOAD_DLL base:74F50000 MSAFD.dll
LOAD_DLL base:74F90000 WSHTCPIP.dll
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
CREATE_THREAD
EXIT_THREAD
CREATE_THREAD
EXIT_THREAD
LOAD_DLL base:77520000 WDMAUD.dll
UNLOAD_DLL (WDMAUD.dll) base: 77520000
LOAD_DLL base:77520000 WDMAUD.dll
CREATE_THREAD
UNLOAD_DLL (WDMAUD.dll) base: 77520000
LOAD_DLL base:77520000 WDMAUD.dll
UNLOAD_DLL (WDMAUD.dll) base: 77520000
LOAD_DLL base:77520000 WDMAUD.dll
UNLOAD_DLL (WDMAUD.dll) base: 77520000
LOAD_DLL base:77520000 WDMAUD.dll
UNLOAD_DLL (WDMAUD.dll) base: 77520000
LOAD_DLL base:77520000 WDMAUD.dll
UNLOAD_DLL (WDMAUD.dll) base: 77520000
LOAD_DLL base:77520000 WDMAUD.dll

EXIT_THREAD
CREATE_THREAD
EXIT_THREAD
EXCEPTION(2nd Chance) Exception: Access Violation
code: C0000005 addr:00000000
Unknown_Module-00000000 (00000000)
invalid read from 00000000
EAX:000310DC EBX:0012FC60 ECX:00000000
EDX:77F951B6 ESI:00031104 EDI:00000001
ESP:00031044 EBP:00031064 EIP:00000000
EFLAGS:00010246
CS:001B DS:0023 ES:0023
SS:0023 FS:003B GS:0000
Stack dump
77F8EB70:00031104:0012FC60:00031120
Call stack
Exception: Access Violation
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_THREAD
EXIT_PROCESS
whitetiger8 2003-12-30
  • 打赏
  • 举报
回复
我认为你应该关注一下日志,这是解决问题的好方法了
hnhb 2003-12-30
  • 打赏
  • 举报
回复
不知道,且看看会不会有结果....
47522341 2003-12-30
  • 打赏
  • 举报
回复
关注...
tonylk 2003-12-30
  • 打赏
  • 举报
回复
设置程序使用debug的dcu,并设置编译时包含调试信息,然后用boundcheck检查。。。。用Boundcheck会找到delphi的程序有一大堆内存泄漏的,要找真正有用的信息比较吃力。
也可以用log文件,或是去除部分可疑功能后再运行程序来检查。
另,对于需要不断申请、释放内存的操作,建议自己预先分配一定量的内存,今后就直接使用这些内存进行操作,即自己管理部分内存,避免有可能产生的内存碎片。。

我当时写的一个程序,客户使用后报告说平均每使用一个月就死机一次(用的是win98),他们还以为是我故意做的陷阱呢,查了好久,最后终于发现是在一个地方CreateProcess后没有释放handle造成的,胸闷啊。。
cxz7531 2003-12-30
  • 打赏
  • 举报
回复
我的意见是只能写日志。另外会不会是操作系统的原因???因为毕竟你的软件是在操作系统上运行
hejunhening 2003-12-30
  • 打赏
  • 举报
回复
我用过boundschecker等。也还没找到退出的地方。
准备用codeside,但是在装codesite的DPK的时候,总是装不进去。
网上下载下来的都不行,如果那位朋友有可以装的起的可以给我一份。谢谢。
我自己写了一个类似codesite的东西,因为这个东西不可能在系统里面每个地方都加,
只能在一些关键的地方加,结果还是找不到程序在那里退出的。所以很忧闷。
bluz 2003-12-30
  • 打赏
  • 举报
回复
写日志应该是比较有效的方法,应该可以的。你可以在程序中分段增加日志,逐步缩小范围。
zth215 2003-12-30
  • 打赏
  • 举报
回复
顶一下
jpyc 2003-12-30
  • 打赏
  • 举报
回复
还是提倡你使用分段的方法来测试,将程序分成块,逐步缩小故障的范围
aiirii 2003-12-30
  • 打赏
  • 举报
回复
比較麻煩, 關注

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧