我的程序
多线程+串口通讯(厂家dll)+数据库操作
正常情况下退出程序是有提示的,但是会经常出现当执行某个与串口相关代码时程序就没有提示的关闭了,而用 try也捕捉不到???
是否与厂家的dll有关,还是线程+串口容易造成底层错误从而导致程序崩溃?

解决方案 »

  1.   

    dll内存溢出吧.查一下接口说明,是不是调用不规范之类的
      

  2.   

    可能性很大,DLL是何种技术开发?
    如果DLL有源码就能调试一下
    否则只能尝试+猜测,如把参数类型转换、改成单线程调用
      

  3.   

    最近刚拿到厂家的dll源代码,发现里面没有会导致死循环的代码,而且用他自带的测试工具在没有线程同步情况下不会出现这种情况,我觉得应该是线程+通讯同步出了问题,但现在又不知道问题出在哪里。
    虽然现在我已经开始在厂家的代码上重写了程序核心代码,但是老的用户一直在为这个问题困扰。另外有没有一种调试程序可以跟踪程序运行状况,主要是可以获得由程序产生的系统错误。
      

  4.   

    可以用这个EurekaLogsetup5111.exe for delphi 7,
    异常调试工具自动写异常日志,自动报异常。
    不过用这个,程序不要用try except end。
      

  5.   

    應該是線程異常造成的,若是dll調用問題,應該是內存地址錯誤之類的。你在線程中,捕捉異常,寫到log中看看
      

  6.   

    我发现在使用WaitForSingleObject后的版本特别会出现这种情况
    EurekaLogsetup5111我好像几年以前用过,不过太麻烦了,程序会改的面目全非
    现在我用厂家提供的源代码+串口同步控制重新写的核心后运行非常顺畅,应该是我以前程序同步控制逻辑错误。
     
    再次感谢大家!谢谢!