Windows MFC:对导致崩溃的线程进行故障排除

Windows MFC:对导致崩溃的线程进行故障排除,windows,multithreading,debugging,mfc,crash,Windows,Multithreading,Debugging,Mfc,Crash,目前,我的项目运行两个独立的线程,一个用于MFC操作,如视图/窗体视图、应用程序窗口等,另一个用于其主函数中的无限while循环。但是,在某些情况下,当我在调试模式下运行程序时,我注意到其中一个线程的退出状态是1,换句话说,它向操作系统返回了一个非零的数字。在VisualStudio2005中运行应用程序时,找出哪个线程负责返回值的最简单方法是什么,这样我就可以对发生的事情进行故障排除?提前谢谢 结合Steve Gilham的建议: 通过查看Spy++,在调查了哪个线程应该对错误负责之后,我确定

目前,我的项目运行两个独立的线程,一个用于MFC操作,如视图/窗体视图、应用程序窗口等,另一个用于其主函数中的无限while循环。但是,在某些情况下,当我在调试模式下运行程序时,我注意到其中一个线程的退出状态是1,换句话说,它向操作系统返回了一个非零的数字。在VisualStudio2005中运行应用程序时,找出哪个线程负责返回值的最简单方法是什么,这样我就可以对发生的事情进行故障排除?提前谢谢

结合Steve Gilham的建议:


通过查看Spy++,在调查了哪个线程应该对错误负责之后,我确定了Novint Falcon SDK发出的hdlUninitDevice调用中的一行应该对这个返回消息负责。从此调用返回失败状态不会弹出错误消息。然而,我不知道这是否是一项重要的交易,在更大的背景下是必不可少的。如果能听到更多的建议,那就太好了。谢谢。

如何终止从属线程?我的第一个想法是,如果主线程退出以非优雅的方式关闭它,那么可能会导致非零状态


至少,如果您可以将两个线程完成的时间解耦,它可能有助于判断哪个线程返回哪个状态。

从属线程已挂起,然后终止,然后父线程本身终止。然而,有时,我注意到在我不知情的情况下创建了其他从属线程,可能是使用计时器创建的。我如何根据win32线程号判断哪个从属线程正在以非零状态终止?这我不知道,通过Google也不是很明显;然而,MSDN关于终止进程的文章可能是解决更广泛问题的起点。谢谢我来看看这篇文章。