Multithreading 有可能在线程退出时使用特定的错误代码中断吗?

Multithreading 有可能在线程退出时使用特定的错误代码中断吗?,multithreading,visual-studio-2008,visual-studio-debugging,exit-code,Multithreading,Visual Studio 2008,Visual Studio Debugging,Exit Code,我想知道是否有可能将VisualStudio2008调试器配置为在线程退出时以精确的错误代码(或至少任何非零值)停止执行。我的应用程序使用了大量线程,因此不可能手动跟踪所有线程 当程序中的任何线程点击“exit(X)”;(X不同于0)并显示源代码时,是否有方法告诉VS2008中断?是,在函数中设置断点_RtlExitUserThread@4,并添加条件*(int*)(ESP+4)==42,以测试退出状态是否为特定值(本例中为42);对于64位程序,请使用ESP+8而不是ESP+4 但是,如果线程

我想知道是否有可能将VisualStudio2008调试器配置为在线程退出时以精确的错误代码(或至少任何非零值)停止执行。我的应用程序使用了大量线程,因此不可能手动跟踪所有线程


当程序中的任何线程点击“exit(X)”;(X不同于0)并显示源代码时,是否有方法告诉VS2008中断?

是,在函数中设置断点
_RtlExitUserThread@4
,并添加条件
*(int*)(ESP+4)==42
,以测试退出状态是否为特定值(本例中为42);对于64位程序,请使用
ESP+8
而不是
ESP+4

但是,如果线程通过从其主线程过程(通常情况下)返回而退出,而不是直接调用
ExitThread
或其包装器之一,那么除了退出状态和线程ID之外,您将没有关于它是什么线程或是什么导致它退出的任何信息


注意:函数名
_RtlExitUserThread@4
是可能在未来版本的Windows中更改的实施细节<代码>_RtlExitUserThread@4是Windows 7上的名称。要了解系统上的实际情况,请运行
dumpbin/exports C:\Windows\system32\kernel32.dll
并查找
ExitThread
映射到的名称。

我发现在
_RtlExitUserThread@4
无法工作,因为无法识别该功能。但是,将断点设置在
kernel32!ExitUserThread
确实有效。