【发布时间】:2011-12-06 22:19:59
【问题描述】:
我在锁里有一段代码:
lock (obj)
{
//...
}
我还有一个属性可以锁定同一个对象。很简单的场景。我的问题是,如果我在锁定的代码块中放置一个断点,然后在 Visual Studio 调试器中检查该属性,会发生什么情况?调试器是否会死锁,直到我在断点后继续执行(或终止 Visual Studio/调试)?还是调试器根本不会显示该属性的任何数据(从 UI 获取后台线程中的数据?)
我问的原因是我有一个专门(且仅)用于调试目的的属性;当这种情况发生时,我可以偶尔不显示数据,但是调试器(和 Visual Studio)多次因错误的调试器属性而崩溃,我宁愿避免在某些时候妨碍我的调试工作的代码我想要帮助的开始!
我计划在我有更多时间的时候进行测试,但希望能从可能更了解的人那里得到更快的答案。
【问题讨论】:
-
我发誓你可以用你写问题的一小部分时间来测试这个。
-
我不会担心调试器崩溃——这是 Visual Studio 团队需要担心的。我会更担心我的多线程同步点是否有效。您应该花时间编写多线程单元测试。
-
@Charles 我承认,在输入问题后,问题变得比我最初在脑海中想象的要简单得多,但在那时,设置测试比扔掉投入的工作更重要发布并希望快速回答:P
-
答案是否定的,它不会死锁。我不知道调试器是如何工作的,但我猜调试器被运行时(或操作系统)视为一种特殊情况,并且不受这些锁的影响。也许调试器被看作是它正在调试的同一个线程(线程不能阻塞自己)。
标签: c# visual-studio-2010 debugging