如何检测Windows上线程退出的原因?

时间:2016-10-23 08:53:26

标签: c++ windows multithreading

我在Windows 2008R2上有一个使用C ++的进程,其中有几个主题。在进程启动期间,有一个线程可能会退出。我没有办法检测发生了什么,有什么建议吗?

根据我的调查,线程只是退出而没有异常。访问空指针可能会导致类似的问题,但我在这个过程中找不到这样的位置。事实上,如果进程崩溃应该会更好,然后我可以得到一个转储文件;但没有任何反应,只有一个线程退出。

我曾尝试使用工具用户模式进程转储程序,但它无法在此进程正在处理的Windows版本上运行。 我曾尝试使用工具进程监视器来检查线程退出事件,但是当我尝试通过一次又一次地启动进程来重现此问题时,进程监视器将抛出异常。

提前致谢。

1 个答案:

答案 0 :(得分:0)

最后找到根本原因 - 字符串由多个线程访问,一个线程刚刚退出。字符串不是线程安全的。

Process Monitor帮助在强大的主机上获取线程退出调用堆栈,这使得根本原因变得清晰。

感谢大家的建议。