是否有可能与特定的错误代码线程退出突破?(Is it possible to break on th

2019-08-02 03:51发布

我想知道如果它是可以配置的Visual Studio 2008调试器停止执行当一个线程具有精确的错误代码(或至少任何非零值)离开。 我的应用程序中使用线程的数量巨大,因此不可能手动跟踪他们。

有没有办法告诉VS2008打破时,程序中的任何线程遇到“退出(X);” (X是从0不同)和显示资源?

Answer 1:

是的,在函数中设置断点_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映射到。



文章来源: Is it possible to break on thread exit with specific error code?