1

我正在尝试调试一个可以正常工作的多线程应用程序,除了它半随机地停止做任何事情然后无限期挂起。暂停和检查调用堆栈什么都没有显示,因为它只显示外部代码(在 GUI 线程上)。

对我来说,这绝对闻起来像僵局,但我什至无法开始弄清楚原因是什么。

我正在尝试使用 Visual Studio 中的内置性能工具,但是我没有找到任何对我有用的数据。我已经尝试过并发可视化工具和资源争用工具。程序挂起后,这些工具都显示除 GUI 线程的正常基线之外的任何线程上没有任何活动。我找不到查看线程正在等待的锁(如果有的话)的方法。

真正有用的是对于给定的时间点,能够查看哪些线程持有哪些锁,哪些线程正在等待哪些锁,以及这些调用来自代码的何处。

有没有办法在 Visual Studio 中做到这一点,或者,如果没有,是否有其他工具可以提供帮助?

4

0 回答 0