我的程序是多线程处理一些数据,反复运行时,偶尔出错,大多时候程序没问题,请问高手如何找出这错误?

解决方案 »

  1.   

    多线程的话不太好调,你可以试一下在你出错的时候把程序break一下,然后看一下当前活动的是哪个线程,再一步步缩小可能出错的范围。
    Debug->Break(调试时才有用)
    break后
    Debug->Threads,看看当前是哪个线程在跑,运行好的话还能从堆栈里看到是哪行代码出的问题。另外你可以用TRACE多输出点信息,调多线程多输出点信息会对你有所帮助。+_+
      

  2.   

    写日志
    出错?结果错误还是崩溃?
    如果崩溃的话,可以考虑设置工程,生成pdb符号文件,用windbg运行程序,
    崩溃后再调试
      

  3.   

    先谢谢 楼上的 可现在的问题是程序不知道什么时候出错 ,有时运行后10分钟,有时30分钟,不定的。。
    再问 “出错的时候把程序break一下”怎么break,具体怎么做啊 ,出错时就是那种带红叉的对话框?
      

  4.   

    运行 DEBUG 版本程序,跳出出错消息框时选取消,然后选调试!最好直接在 VC 中直接调试运行程序,出错时 VC 后定位到出错地方的~
      

  5.   

    有一个全局捕捉函数,UnHandledException 统一调用到; 出错了可以记录一些错误信息;另外在可能出错地方多加try catch...
      

  6.   

    lzg0001 :“跳出出错消息框时选取消,,然后选调试”怎么弄啊 点取消后直接程序就退出了,然后按F5?
    evileagle :同步问题涉及到哪些关键地方啊,是用互斥体等来避免么
      

  7.   

    选择“重试”,然后打开call stack看函数的调用顺序,也许能找到线索。另外,注意output里的信息,有些内存泄漏会在里面有提示。
      

  8.   

    哦  看过了 没内存泄露的提示  不过还不会看call   stack看函数的调用顺序 。这个怎么看啊