GaT*_*aCa 9 multithreading exit-code visual-studio-2008 visual-studio-debugging
我想知道是否可以配置visual studio 2008调试器以在线程以精确错误代码(或至少任何非零值)退出时停止执行.我的应用程序使用了大量的线程,因此无法手动跟踪它们.
当程序中的任何线程命中"exit(X);"时,有没有办法告诉VS2008中断?(X与0不同)和显示源?
是的,在函数中设置一个断点_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映射到的名称。
| 归档时间: |
|
| 查看次数: |
3016 次 |
| 最近记录: |