??? 程序不明原因退出

freelybird 2002-04-23 10:59:13
最近我在一个项目中完成了一个短消息通信代理程序(用VC6.0编写). 在长时间的运行测试中出现了一种很奇怪的现象,就是程序有时无缘无故退出了,不留下任何可疑迹象.而且错误很难重现,因为程序在实际运行中长达数个月之久都非常稳定.

为了查找问题根源,我想尽了各种方法,包括写log跟踪运行日志、捕获各种异常、包括设置了自己的异常处理函数SetUnhandledExceptionFilter()、还做了多种勾子函数以捕获系统函数的调用(如ExitProcess ExitProcess). 但是,都没有获得有效成绩. 程序退出时似乎跳过了以上的所有步骤。现在,为了排除这个Bug,我想请教各路高手及专家,在系统中出现了什么样的情况下,程序会导致退出? 或哪些C函数处理时出错会有可能退出系统?
...全文
128 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
freecutelei 2002-04-27
  • 打赏
  • 举报
回复
终于明白了,,2个星比1个星好
阿愚就是在这个贴子里面升级的 :0 )
ljy545 2002-04-27
  • 打赏
  • 举报
回复
这个问题我遇到一次,但不知道怎么回事!
freelybird 2002-04-27
  • 打赏
  • 举报
回复
问题应该是找到了,都是A2BSTR(LPCSTR)这个宏惹的祸,因为在这个宏中有一个SysAllocStringlen(),它需要显式的调用SysFreeString(),所以导致memory leak slowly. 不过有一点我感到特奇怪,A2W()也与其类似,但它从堆上分配的地盘可以自动释放,而A2BSTR()则不能,并且在MSDN中没有提示你去显式地释放它.同时我从网上搜出来的许多例子也并没有这样做,包括msxml解析器.真是莫名惊诧,难道这是一个流传很广的bug???
freelybird 2002-04-24
  • 打赏
  • 举报
回复
谢谢你所给予的意见与想法。

其实现在我们现在的系统已经有多方面的监控与自动恢复功能,正如你所说的,现在就有一个监控程序与这个模块通过UDP包通信而交换一些运行信息,从而执行一些修复及其它操作。所以说从方案上讲,我们整个系统很安全。

只不过,项目领导及我本人也想把这个原因找出来。
Thank you agagin.
feng_sky 2002-04-24
  • 打赏
  • 举报
回复
如果运行的几个月这样的BUG也有可能是系统产生的。
当然也与你的方案设计不周全有关。
一个解决的办法就是另外再作一个程序与你现在的程序过一段时间通信一次。如果几次POLL没有应答就KILL掉你的程序后,再重新运行你的程序。

没有百分百可靠的程序。
只有百分百可靠的解决方案。
freelybird 2002-04-24
  • 打赏
  • 举报
回复
怎么没有哪位好心的高手回答我的问题?至少给一些可行性、有参考性的建议。不胜感谢
freelybird 2002-04-24
  • 打赏
  • 举报
回复
请高手多提宝贵意见
vccsdn 2002-04-24
  • 打赏
  • 举报
回复
做一个测试版,放上去

opentuxedo 2002-04-23
  • 打赏
  • 举报
回复
看一看你的程序调用的函数中是不是有使用过exit()运行库函数的?
opentuxedo 2002-04-23
  • 打赏
  • 举报
回复
你可以再编一个程序,在这个程序里而用CreateProcess来调用你现在的程序,然后看看能不能得到什么错误信息。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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