0

我有一个应用程序,其中有多个线程,并且大多数时候它们只是在等待事件发生(例如,使用 AutoResetEvent.Wait)。

在这种情况下,如果我尝试使用即时窗口执行命令,无论我使用什么线程,我都会得到“无法评估表达式,因为当前线程处于睡眠、等待或加入状态”。我想知道是否有任何技巧可用于例如使线程停止等待(例如以某种方式设置 AutoResetEvent)。

我已经阅读了暂停时的调试和“无法评估表达式”,所以我担心这可能是不可能的。

4

1 回答 1

2

我认为你唯一的选择

  • 提前注入一些在本机代码中永远不会停止的线程(某种忙等待)。您将有效地失去一个核心,但至少能够调试。
  • 有特殊的线程会等待一些外部命令来触发事件......
  • 放弃表达式/立即窗口并依赖内存转储或使用带有 SoS 的 WinDbg。

基本上,如果没有未卡在本机代码中的托管线程,您就无法在调试进程中安全地运行托管代码(自 2010 年链接问题以来,该领域没有什么新内容)。

于 2013-03-22T04:31:42.673 回答