程序无法正常结束

shicong2004 2006-09-05 10:47:36
遇到一个问题,程序在调用主窗口的close之后,不能正常结束,只是所有窗口关闭了,在任务管理器中看到进程仍然存在,请哪位大虾解释一下这是什么原因
所用builder版本为6.0,程序中使用了BussinessSkinForm
...全文
558 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
shicong2004 2006-09-13
  • 打赏
  • 举报
回复
字节对齐方式?这个没有注意过,是什么意思
编译设置应该都是一样的
shicong2004 2006-09-13
  • 打赏
  • 举报
回复
谢谢上面的回答
问题已经解决了,结果是方向性错误了,程序本身是没有错误的,而是因为在程序中用到的corba的orb配置问题,在cb中客户端的orb配置成多线程会出现orb线程不能自行销毁的问题,由于vc里面不会,所以配置文件拿过来后一直没有想到是这方面的问题,再次谢谢各位的回答
netliuming 2006-09-12
  • 打赏
  • 举报
回复
查看一下,会不会你的工程在字节对齐方式上与其他的dll工程不一致。比对一下你的编译设置跟别人正常的看那里有不一样。bcb中一般查complier的compiling, Advanced complier几项就行了。
shicong2004 2006-09-11
  • 打赏
  • 举报
回复
谢谢大家的回答
这个问题我实在有点搞不定了
不过现在又发现一个现象,如果直接启动或者从builder里面调试则程序是不会正常结束,不过如果通过vc的动态链接库调试方式(动态链接库使用vc实现的)启动程序它又是可以正常结束的,我就想是不是动态链接库有什么使用方法上面没有搞对(我是用vc实现,然后用implib导出成builder的lib文件,然后使用),问问大家有什么看法
shicong2004 2006-09-11
  • 打赏
  • 举报
回复
通过排除法差不多知道问题代码,但是不敢确定,因为在动态链接库中去掉那几行代码就正常,不过麻烦的是那几行代码又调用了别人另外的动态链接库,而且这几行库除了我之外的其他人用起来都是没有问题的,就是不知道为什么加到我的库中会出现这种现象,同时正如我上面提过,用vc调试我的库测试的时候程序又是正常的
肯定不是数组越界和参数传递之类的错误
jiangshx 2006-09-11
  • 打赏
  • 举报
回复
排除法,一段一段的去代码,看看去了哪段后,再不出错
然后查查参数传递的类型是否一致,数组的下标值是否存在超出范围的可能
jiangshx 2006-09-11
  • 打赏
  • 举报
回复
指针越界
Taiji02 2006-09-08
  • 打赏
  • 举报
回复
BussinessSkinForm惹的吧,这些控件有时会产生莫名其妙的错误的。
muroachanf 2006-09-08
  • 打赏
  • 举报
回复
检查Dll的退出的时候有没有阻塞或者死循环,
另外com异常
xiaoshi0 2006-09-08
  • 打赏
  • 举报
回复
还有要说的就是,codeguard只能说有点小用,不要依赖它

你的程序codeguard检查不出来的,内存泄漏不会导致进程无法结束

个人感觉还是DLL的调用上,或者DLL本身存在问题
xiaoshi0 2006-09-08
  • 打赏
  • 举报
回复
内存没有释放不会导致程序关闭不了,最可能的情况就是线程被挂起了,或者是线程进入了死循环。

你认为你的程序用了其他的第三方控件才不正常的,我觉得可能性比较小,还是先查查你自己的程序吧。

看看你的程序有几个线程,每个线程都做了哪些事情,什么时候创建,什么时候撤销的。

或者是你调用了其他的DLL,然后DLL中有线程挂死了,导致DLL不能释放,这都是有可能的。
netliuming 2006-09-08
  • 打赏
  • 举报
回复
动态调的?有及时释放吗在退出前?
flowercity 2006-09-07
  • 打赏
  • 举报
回复
我的线程也出现过
先销毁不行
还要先挂起再销毁
否则程序也退不出来
gloom 2006-09-07
  • 打赏
  • 举报
回复
有些时候有点莫名其妙,前段时间我也遇到这们的问题,Close以后没界面了,进程列表还在,后来发现只要先最小化应用程序,再关闭就没事了,所以我是先调用Application->Minimize(),再Close
不过各人情况不一定一致。
shicong2004 2006-09-07
  • 打赏
  • 举报
回复
谢谢各位的回复
这两天再跟了一下,发现只要调用了动态链接库(自己做的)中的函数,程序就会出现这种情况,不调则不会出现问题,不过仍然无法解决,请问各位这可能是什么原因
shicong2004 2006-09-07
  • 打赏
  • 举报
回复
问题真是有点莫名其妙,我的dll库其他人也会调,不过他们就没有出现这个问题,我就推测是不是exe程序中某个部分造成dll出现问题,我就把几乎所有代码注释掉,不过只要一调dll库,还是会出问题,实在是有点莫名其妙
netliuming 2006-09-07
  • 打赏
  • 举报
回复
感觉还是代码逻辑问题,我以前也碰过有一段时间程序老退不出来,一步一步跟踪下去还是能找到原因的。还有当出现问题时马上查看call stack也很有用。
shicong2004 2006-09-05
  • 打赏
  • 举报
回复
程序结束的时候所在线程就是主线程,用codeguard也没有什么发现,郁闷呀...
BlueDeepOcean 2006-09-05
  • 打赏
  • 举报
回复
我上面说到那些都是我以前经历的,并非无的放矢。而且有很多程序不能正常退出的可能比我说的那些还要奇怪。
netliuming 2006-09-05
  • 打赏
  • 举报
回复
退出时,设断点跟踪一下,还有看看thread status有那些线程,当出问题时是在那个停止的。
还有就是可以打开codegurad看内存泄漏,不过BlueDeepOcean(蓝色·深海)以前说这个不是很准,但直到目前我还没碰到她说的那个情况,不敢断言。 打开它应该还是可以帮助你,如果有内存泄漏的话
加载更多回复(14)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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