0

私はいくつかのスレッドがあり、ほとんどの場合、イベントが発生するのを待っているだけのアプリを持っています(たとえば、AutoResetEvent.Waitを使用)。

このような場合、イミディエイトウィンドウを使用してコマンドを実行しようとすると、どのスレッドを使用しても、「現在のスレッドがスリープ、待機、または参加しているため、式を評価できません」というメッセージが表示されます。たとえば、スレッドの待機を停止させるために使用できるトリックがあるかどうか疑問に思っています(AutoResetEventを設定するなど)。

一時停止中にデバッグを読んだのですが、「式を評価できません」ので、おそらく不可能だと思います。

4

1 に答える 1

2

私はあなたの唯一の選択肢だと思います

  • ネイティブコードで停止することのないスレッドを事前に挿入します(ある種のビジーウェイト)。事実上1つのコアが失われますが、少なくともデバッグは可能です。
  • いくつかの外部コマンドがイベントをトリガーするのを待つ特別なスレッドがあります...
  • 式/イミディエイトウィンドウをあきらめ、メモリダンプに依存するか、SoSでWinDbgを使用します。

基本的に、ネイティブコードにとらわれていないマネージスレッドがないと、デバッグされたプロセスでマネージコードを安全に実行できません(2010年の質問にリンクされて以来、この分野で新しいことは何もありません)。

于 2013-03-22T04:31:42.673 に答える